我有一个分层窗口(使用 SetLayeredWindowAttributes)。如果我将整个窗口的 alpha 设置为 128 并在其上绘制黑色矩形,它会按预期工作(黑色矩形以大约 50% 的不透明度显示)。
但是,如果我在整个窗口上设置 aplha(当我调用 SetLayeredWindowAttributes 为 255 时),然后用设置为 50% 的画笔绘制黑色矩形,它们黑色矩形是纯实心的,没有任何半透明性。
我的印象是,一旦我以这种方式创建了一个分层窗口,我就可以使用不同级别的每像素 Alpha 来绘制它,这样这两个窗口就会绘制两个不透明度级别:
User32.SetLayeredWindowAttributes(this.Handle, (uint) TransparentColorKey.ToArgb(), 255, User32.LWA_ALPHA | User32.LWA_COLORKEY);
e.Graphics.FillRectangle( new SolidBrush(Color.FromArgb(200, 40, 40, 40)), myRect);
e.Graphics.FillRectangle( new SolidBrush(Color.FromArgb( 25, 40, 40, 40)), myRect);
但是这两个矩形都具有相同的不透明度(我希望一个为 200,一个为 25)。我只能控制整个窗口的不透明度(SetLayeredWindowAttributes 中的 255)。
我在这里缺少什么,以便我可以以不同的 alpha 半透明度绘制不同的元素,甚至只是矩形?
顺便说一句,我想要 SetLayeredWindowAttributes(而不是 UpdateLayeredWindow),因为我正在使用设备上下文进行主动绘图。后一种方法需要一次性绘制并提供位图。谢谢!戴夫