windows - DirectDraw + 分层窗口颜色键?

标签 windows transparency directdraw

我正在使用 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://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/

相关文章:

java - 在 Mac 和 Windows 上从 swing 打印 - Postscript 支持在哪里?

windows - Qt 在 Windows 8.1 上的安装

windows - 当前目录在 Windows 8 上无效

python - 使用 PyQT 伪透明

c++ - 在不透明物体内部绘制透明物体

c++ - WS_EX_LAYERED 窗口不接收鼠标事件

c++ - ActiveX HWND、DirectX WindowLess 模式

windows-7 - 在顶部绘制带有文本的视频

c++ - Windows 上奇怪的文件加载时间

delphi - 使用显卡(DirectX、OpenGL)代替 GDI 或 GR32 函数