请帮我在HDC alpha通道。 我让HDC DC扔CreateCompatibleDC。 不是打电话CreateDIBSection并可以在内存中找到图像的字节。 不是打电话DrawFrameControl这个DC。 所有工作,但在存储器有每像素4个字节和α通道由00填充即使之前有FF。 但我需要alpha通道。 我怎样才能让DrawFrameControl设置真正的阿尔法值或只是不要碰它们。 谢谢。 很遗憾的英语不好:(
Answer 1:
你不能让GDI无法写入四字节每像素的位图的α/保留字节。 GDI是不是真的阿尔法感知,与一对夫妇像功能之外AlphaBlend
。 但是,您可以使用它写入和阿尔法重置为0 知道哪些像素上面写的知识,事后手动修复阿尔法。
欲了解更多信息,请阅读这三篇文章:
- 透明图形与GDI,第1部分
- 透明图形与GDI,第1部分1/2
- 透明图形与GDI,第2部分
前两种可能会给你足够的信息来实现你想要的。
这些文章取一个通用的方法来处理阿尔法与GDI功能,通过扫描,其中阿尔法被打一顿像素和固定它(并进入更先进的技术借鉴彼此顶部几件事情,用正确的字母。) FrameRect
绘制矩形,其中线是一个单元宽和高。 您可能会发现更有效的利用线条,甚至直接编辑存储在像素的位图,绘制在内存中的直线绘制。 这避免了扫描GDI绘制象素整个位图 - 毕竟,因为它是一个单元宽,边缘的矩形,你确切地知道哪些像素将被吸引到已经和可以自己进行编辑。
文章来源: Alpha channel in DeviceContext (HDC)