2012-04-12 95 views
6

请帮助我使用HDC中的alpha通道。我使HDC直流投掷CreateCompatibleDC。除了调用CreateDIBSection并可以在内存中查找图像的字节数。将DrawFrameControl调用到此DC。所有的作品,但在内存中有4个字节每个像素和alpha通道填充00。即使有FF之前。但我需要alpha通道。我如何让DrawFrameControl设置真正的alpha值或者不要触摸它们。谢谢。对不起英文不好:(DeviceContext(HDC)中的Alpha通道

回答

7

你不能让GDI不能写入每个像素4字节的字节/保留字节GDI并不是真正意义上的字母,除了一对夫妇像AlphaBlend功能。但是,您可以使用知识,它写入和复位阿尔法0 知道哪些像素就写信给,事后手动修复阿尔法。

欲了解更多信息,请阅读这三个文章:

前两种可能会给你足够的信息来实现你想要的。

这些文章采用一种通用的方法来处理alpha与GDI函数,通过扫描alpha被破坏并修复它的像素(并进入更先进的技术来绘制几个事情在彼此之上,以正确的alpha。 )FrameRect绘制一个矩形,其中线条是单位宽度和高度。您可能发现使用直线绘制效率更高,甚至直接编辑内存中的像素位图,可以在内存中绘制直线。这避免了必须扫描GDI绘制像素的整个位图 - 毕竟,由于它是一个具有一个单位宽边的矩形,因此您可以确切知道哪些像素已被绘制,并且可以自己编辑它们。