gpt4 book ai didi

c++ - ID2D1HwndRenderTarget 总是有黑色背景而不是透明

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:04 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的透明窗口,我可以在其中使用 Direct2D 进行绘图。

到目前为止我做了什么:

  1. 创建窗口
  2. 将样式设置为 WS_EX_LAYERED
  3. 设置alpha颜色键为#FFF
  4. 使用 Windows Graphics 绘制一个白色矩形
  5. 现在窗口是透明的,每像素 alpha
  6. 然后在窗口外制作一个目标并使用 Direct2D 绘制
    • 制定 ALPHA _PREMULIPLIED 目标
    • 使用 0.0f alpha 清除#FFF
  7. 窗口现在是黑色的

我只是不知道如何使窗口透明。如果您能指出我的错误,我将不胜感激

最佳答案

这里是如何使用 DirectComposition API 实现的

俄语:http://www.oszone.net/25395/

英语:https://msdn.microsoft.com/magazine/dn745861.aspx

基本上作者所做的是

  1. 设置 WS_EX_NOREDIRECTIONBITMAP 扩展样式以删除 DWM 的重定向位图。窗口的内容现在是空的。

  2. 创建 DirectComposition 设备

  3. 创建组合交换链(而不是 hwnd 交换链)

  4. 将一个具有 SwapChain 作为内容的视觉作为根视觉。

  5. 使用 Direct2D API 渲染到 SwapChain。

它也适用于 WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOPMOST 用于创建事件透明覆盖。

关于c++ - ID2D1HwndRenderTarget 总是有黑色背景而不是透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18836921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com