我正在使用 WS_EX_LAYERED
创建一个窗口,并使用 SetLayeredWindowAttributes()
为其设置颜色键。我可以通过在窗口内使用 FillRect()
绘制一个简单的矩形来验证此颜色键确实在窗口中创建了一个透明补丁。但是,当我使用 DirectDraw 在窗口中绘图时,这不起作用。我在窗口上创建了一个 IDirectDrawSurface7
并向其添加了一些像素 Blt()
。一些像素用颜色键着色,但我不认为它们是透明的,它们只是出现在颜色键中。
DirectDraw 表面是否存在与分层窗口颜色键控冲突的固有因素?
当我使用 SetLayeredWindowAttributes()
设置 alpha 值时,这似乎适用于 DirectDraw 表面,而且它确实看起来是半透明的。
最佳答案
我不知道您是否看过这篇文章,但下面发布的文章中的这一段看起来有点像您要查找的内容。
hWnd 是带有 WS_EX_LAYERED 样式标志的窗口的窗口句柄。 dwFlags 参数可以具有 LWA_COLORKEY 和 LWA_ALPHA 之一或两者。如果使用 LWA_COLORKEY 标志,则 crKey 参数是透明颜色键。如果使用 LWA_ALPHA 标志,则 bAlpha 参数是常量源 alpha 值。 **只有顶层窗 Eloquent 能成为分层窗口。**
我认为这里的问题是最后一句话。来源是一本关于谷歌图书的书的一部分。您可以在此处找到一些代码详细示例来阅读它:
我还将包括以下链接,这些链接稍微讨论了它,尽管细节数量几乎不同:
http://web.cs.wpi.edu/~matt/courses/cs563/talks/cbyrd/pres3.html
http://msdn.microsoft.com/en-us/library/windows/hardware/ff567254(v=vs.85).aspx
我不知道这是否能回答您的问题,但希望对您有所帮助。干杯。
关于windows - DirectDraw + 分层窗口颜色键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26695040/