【问题标题】:DirectDraw + Layered window color key?DirectDraw + 分层窗口颜色键?
【发布时间】:2014-11-02 01:15:40
【问题描述】:

我正在使用WS_EX_LAYERED 创建一个窗口,并使用SetLayeredWindowAttributes() 为其设置颜色键。我可以通过在窗口内使用FillRect() 绘制一个简单的矩形来验证这个颜色键确实在窗口中创建了一个透明补丁。但是,当我使用 DirectDraw 在窗口中绘图时,这不起作用。我在窗口上创建了一个IDirectDrawSurface7,我在Blt()ing 上添加了一些像素。一些像素用颜色键着色,但我不认为它们是透明的,它们只是出现在颜色键中。

DirectDraw 表面中是否存在与分层窗口颜色键相冲突的固有内容?
当我使用 SetLayeredWindowAttributes() 设置 alpha 值时,这似乎与 DirectDraw 表面配合得很好,而且它确实看起来是半透明的。

【问题讨论】:

标签: windows transparency directdraw


【解决方案1】:

我不知道您是否看过这篇文章,但下面发布的文章中的这一段看起来有点像您正在寻找的内容。

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://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

我不知道这是否会回答您的问题,但我希望它对您有所帮助。干杯。

【讨论】:

  • 正如我在问题中提到的,我在此窗口上使用 DirectDraw 进行 alpha 混合没有问题。所以WS_EX_LAYERED 确实在这个窗口上工作,只是不是颜色键控。
猜你喜欢
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2015-12-16
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多