请帮助我在HDC的alpha通道。我让HDC抛出CreateCompatibleDC。然后调用CreateDIBSection,并可以在内存中找到字节的图像。然后调用此dc的DrawFrameControl。所有都有效,但在内存中,每个像素有4个字节,alpha通道填充为00。即使以前有FF。但我需要alpha通道。如何让DrawFrameControl设置实际的Alpha值或不接触它们。谢谢。很抱歉我的英文不好:(
发布于 2012-04-12 17:12:49
您不能使GDI不写入每像素位图四个字节的alpha /保留字节。除了像AlphaBlend这样的几个函数之外,GDI并不是真正的阿尔法感知的。但是,您可以使用它写入的知识,并将alpha重置为0,以了解它写入哪些像素,然后手动修复alpha。
有关更多信息,请阅读以下三篇文章:
前两个可能会给你足够的信息来实现你想要的。
这些文章采用了使用GDI函数处理alpha的通用方法,即扫描alpha被破坏的像素并修复它(并介绍了更高级的技术,以便用正确的alpha在彼此的顶部绘制几个东西)。FrameRect绘制了一个矩形,其中的线条宽和高各有一个单位。您可能会发现,使用线条绘制更有效,甚至直接在内存中编辑像素位图,以便在内存中绘制直线。这就避免了必须扫描整个位图中GDI绘制的像素-毕竟,因为它是一个具有一个单位宽的边缘的矩形,您可以确切地知道哪些像素将被绘制,并且可以自己编辑它们。
https://stackoverflow.com/questions/10118935
复制相似问题