清晰绘制的 gdiplus 矩形

问题描述 投票:0回答:1

我在循环中的所有窗口上用 gdiplus 绘制一个半透明矩形,对于每个循环,矩形都会失去其透明度。如何清除之前绘制的矩形或保持其透明度值不变? 我需要在所有应用程序的顶部显示矩形。

抽奖代码:

Gdiplus::Graphics g(desktopHDC);
Gdiplus::SolidBrush brush(Gdiplus::Color(50 /*A*/, 0 /*R*/, 0 /*G*/, 255 /*B*/));
g.FillRectangle(&brush, 0, 0, 100, 100);

我尝试用透明颜色清除 Graphics 对象,但它只是让我的屏幕变黑。我也试过 InvilidateRect 但它什么也没做。

c++ winapi gdi+
1个回答
0
投票

这不会成功,因为随着绘图,您更改了桌面图像并且没有简单的返回方式(如果您不想保留/获取区域,这对于桌面的动态图像来说又是一个坏主意)。

实现你需要的最简单的方法是为整个屏幕创建一个透明窗口并在上面绘制。

有关详细信息,请参阅UpdateLayeredWindow

© www.soinside.com 2019 - 2024. All rights reserved.