微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows Aero:绘制“玻璃”的颜色是什么颜色?

我必须在客户区涂上什么颜色才能使玻璃出现?

我已经把我的表单框架扩展到客户区使用:

DwmExtendFrameIntoClientArea(self.Handle,margins);

我找不到任何官方文档从微软的DWM将寻找什么颜色和/或阿尔法replace玻璃。 DwmExtendFrameInClientArea文档甚至没有提到自定义颜色是必需的。 只有传闻和神话,甚至需要特殊的颜色。

我能find的最接近MSDN的话题是:

如何在Windows 7中使用Python进行截图?

在Windows Vista / 7(使用DWM)中redirect应用程序的graphics输出

如何在Windows 7 Aero任务预览中创build自己的控件?

如何在订阅DWM组合/ Aero Glass禁用时引发的操作系统级事件?

有没有办法改变非客户区的Windows Aero颜色?

使用DWM自定义窗口框架

为了使扩展帧可见,每个扩展帧边下的区域必须具有α值为0的像素数据。

更新:一个博客文章

面向开发人员的Windows Vista – 第3部分 – 桌面窗口pipe理器

偶尔,RGB黑色(0x00000000)的位模式与100%透明ARGB的位模式相同,因此您可以使用“黑色”GDI笔刷进行绘制,并假设您已经指示DWM模糊绘制区域,结果将是所需的玻璃效果

如果我从字面上理解( alpha值为零的像素数据 ),我构build一个零alpha的颜色,并在扩展区域绘制:

Color fillColor = Color.FromArgb(0,0); //(a,r,g,b) e.Graphics.FillRectangle(new SolidBrush(fillColor),e.ClipRectangle);

但玻璃效果不会出现:

替代文字sof/windows/anlmd4.png

如果我忽略引用的MSDN主题,而是使用完全不透明的黑色(而不是完全透明的黑色):

Color fillColor = Color.FromArgb(255,e.ClipRectangle);

玻璃效果确实出现:

替代文字sof/windows/2ug2ias.png

那么我就会相信不透明的黑色是DWM将用玻璃代替的像素值。

但是,如何在玻璃区域上绘制黑色物品呢?

我已经testing了在玻璃区域画一个黑色的矩形 ,旁边有一个圆圈 。 奇怪的是,矩形出现,而圆出现; 两个都是一样的颜色:

Brush b = new SolidBrush(Color.FromArgb(255,0)); e.Graphics.FillRectangle(b,11,32,32); e.Graphcis.FillEllipse(b,43,32);

替代文字sof/windows/aayykk.png

那么世界正在发生什么? 在扩展的边框区域涂上适当的颜色以使玻璃出现?

更新2

使用Adisak的build议来隔离航空公司生活中的愚蠢,我在这里一个黑色的矩形:

替代文字sof/windows/5dw861.png

FillEllipse不支持绘制黑色圆圈吗?

更新3

Pondidum想知道如果调用Graphics.Clear 透明的黑色将使玻璃可见:

e.Graphics.Clear(Color.FromArgb(0,0));

确实有效,但你仍然不能在玻璃上画出不透明的黑色物品:

替代文字sof/windows/5dw861.png

更新4

看着微软的Vista桥梁库 (围绕Vistafunction的托pipe包装,将不会被添加到.NET),他们只能设法使用WPF窗体,而不是WinForms的扩展玻璃框架。

也可以看看

航空:如何在玻璃上绘制ClearType文字

航空:如何在玻璃上绘制纯色?

显示窗体时,Windows Vista和7动作效果只应用一次。 为什么?

我的OpenGL游戏将Aero DWM Glassclosures

C#:玻璃forms?

预览窗口后面屏幕状态的Aerofunction是什么?

请帮助 – 从Aero Shake / 3D翻转WM_SYSCOMMAND消息

Color fillColor = Color.FromArgb(0,e.ClipRectangle);

这实际上是相当有趣的。 这意味着你正在绘制完全透明的东西 – 所以这个改变绝对没有!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐