我正在使用WS_EX_LAYERED
创建一个窗口,并使用SetLayeredWindowAttributes()
为其设置颜色键。我可以通过在窗口内使用FillRect()
绘制一个简单的rect来验证此颜色键是否确实在窗口中创建了透明色块。但是,当我使用DirectDraw在窗口中绘制时,这不起作用。我在窗口上创建一个IDirectDrawSurface7
,并在其中添加一些像素。有些像素已使用色标进行了着色,但是我看不到它们是透明的,它们只是出现在色标中。
DirectDraw表面上是否存在与分层窗口颜色键控冲突的内容?
当我使用Blt()
设置Alpha值时,似乎可以与DirectDraw曲面配合使用,并且确实确实是半透明的。
最佳答案
我不知道您是否已看到此消息,但下面发布的文章中的这一段看起来有点像您要查找的内容。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.**
我认为这是这里的最后一句话。来源是有关Google图书的一本书的一部分。您可以通过以下一些代码详细示例来阅读它:
http://books.google.com/books?id=-O92IIF1Bj4C&pg=PA720&lpg=PA720&dq=WS_EX_LAYERED+%2B+DirectDraw+color+key&source=bl&ots=SyWKE3aimb&sig=DXbshrEk2tN17h7CtWdMmAkHlAo&hl=en&sa=X&ei=7_JcVKSyFMukNrumgMgB&ved=0CCkQ6AEwAg#v=onepage&q=WS_EX_LAYERED%20%2B%20DirectDraw%20color%20key&f=false
我还将包括以下链接,这些链接会对此稍作讨论,尽管其详细程度几乎没有相同:
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/