我正在使用WS_EX_LAYERED
创建一个窗口并使用SetLayeredWindowAttributes()
为其设置颜色键。我可以通过在窗口内使用FillRect()
绘制一个简单的rect来验证这个颜色键确实在窗口中创建了一个透明的补丁。但是,当我使用DirectDraw在窗口中绘图时,这不起作用。我在窗口上创建了IDirectDrawSurface7
,并Blt()
为其添加了一些像素。一些像素用颜色键着色,但我不认为它们是透明的,它们只是出现在颜色键中。
DirectDraw表面中是否存在与分层窗口颜色键控冲突的内容?
当我使用SetLayeredWindowAttributes()
设置一个alpha值时,它似乎与DirectDraw表面一起正常工作,它确实显得半透明。
答案 0 :(得分:2)
我不知道您是否看过这个,但下面发布的文章中的这一段看起来有点像您要找的。 p>
The hWnd is the window handle of a window with a WS_EX_LAYERED style flag. The dwFlags parameter can have one or both of LWA_COLORKEY and LWA_ALPHA. If a LWA_COLORKEY flag is used, the crKey parameter is the transparent color key. If a LWA_ALPHA flag is used, the bAlpha parameter is the constat source alpha value. **Only top-level windows can be layered windows.**
我认为这是最后一句话就是问题。该来源是谷歌书籍的一部分。您可以使用此处的一些代码详细示例来阅读它:
我还会包含以下几个关于它的链接,虽然不是几乎相同的细节:
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
我不知道这是否会回答你的问题,但我希望它有所帮助。欢呼声。