您不能使GDI不写入每像素四位字节位图的alpha /保留字节.除了几个函数之外,GDI并不是真正的alpha感知AlphaBlend.但是,您可以使用它写入的知识并将alpha重置为0 以了解它写入的像素,然后手动修复alpha.
有关更多信息,请阅读以下三篇文章:
前两个可能会给你足够的信息来实现你想要的.
这些文章采用了一种通用的方法来处理带有GDI函数的alpha,通过扫描alpha被破坏的像素并修复它(并进入更高级的技术,在正确的alpha上绘制几个相互重叠的东西.) FrameRect绘制一个矩形线条是一个单位宽和高.您可能会发现使用线条绘制更有效,甚至直接编辑内存中的像素位图,以在内存中绘制直线.这避免了必须扫描整个位图以获得GDI绘制的像素 - 毕竟,因为它是一个具有一个单位宽边的矩形,所以您确切地知道哪些像素将被绘制,并且可以自己编辑它们.