Ian*_*oyd 30 windows gdi+ aero dwm
我必须在客户区涂上什么颜色才能制作玻璃?
我使用以下方法将表单框架扩展到客户区:
DwmExtendFrameIntoClientArea(self.Handle, margins);
Run Code Online (Sandbox Code Playgroud)
我找不到微软的官方文档,说明DWM用玻璃代替什么颜色和/或alpha.DwmExtendFrameInClientArea上的文档甚至没有提到需要自定义颜色.只有传闻和神话,甚至需要特殊的颜色.
我能找到的最接近的是MSDN上的主题:
使用DWM的自定义窗口框架
为了使扩展帧可见,每个扩展帧的边下面的区域必须具有alpha值为0的像素数据.
更新:和博客文章:
Windows Vista for Developers - 第3部分 - 桌面窗口管理器
碰巧RGB黑色(0x00000000)的位模式与100%透明ARGB的位模式相同,因此您可以使用"黑色"GDI画笔实际绘制并假设您已指示DWM模糊绘制区域,结果将是所需的玻璃效果.
如果我按照他们的字面意思(alpha值为零的像素数据),我构造一个零alpha的颜色,并在扩展区域绘制:
Color fillColor = Color.FromArgb(0, 0, 0, 0); //(a, r, g, b)
e.Graphics.FillRectangle(new SolidBrush(fillColor), e.ClipRectangle);
Run Code Online (Sandbox Code Playgroud)
但玻璃效果没有出现:
替代文字http://i46.tinypic.com/anlmd4.png
如果我忽略引用的MSDN主题,而是使用完全不透明的黑色(而不是完全透明的黑色):
Color fillColor = Color.FromArgb(255, 0, 0, 0); //(a, r, g, b)
e.Graphics.FillRectangle(new SolidBrush(fillColor), e.ClipRectangle);
Run Code Online (Sandbox Code Playgroud)
玻璃效果确实出现了:
alt text http://i45.tinypic.com/2ug2ias.png
然后我开始相信不透明的黑色是DWM用玻璃代替的像素值.
但那我如何在玻璃区域上画黑色物品呢?
我测试过在玻璃区域上画一个黑色矩形,旁边有一个圆圈.奇怪的是,矩形没有出现,而圆圈确实出现; 两者颜色相同:
Brush b = new SolidBrush(Color.FromArgb(255, 0, 0, 0));
e.Graphics.FillRectangle(b, 11, 11, 32, 32);
e.Graphcis.FillEllipse(b, 43, 11, 32, 32);
Run Code Online (Sandbox Code Playgroud)
替代文字http://i49.tinypic.com/aayykk.png
那么世界上究竟发生了什么?在延长的框架区域涂漆以使玻璃出现的正确颜色是什么?
使用Adisak的建议来确切地隔离Aero的愚蠢生活的地方,在这里我在黑色圆圈内绘制一个黑色矩形:
替代文字http://i47.tinypic.com/5dw861.png
FillEllipse不支持绘制黑色圆圈吗?
Pondidum想知道调用带有透明黑色的Graphics.Clear是否会使玻璃可见:
e.Graphics.Clear(Color.FromArgb(0,0,0,0));
Run Code Online (Sandbox Code Playgroud)
它确实有效,但您仍然无法在玻璃上绘制不透明的黑色物品:
替代文字http://i47.tinypic.com/5dw861.png
看看微软的Vista Bridge Library(围绕Vista功能的托管包装器,不会添加到.NET),他们只能设法在WPF表单上使用扩展的玻璃框架,而不是WinForms.
Color fillColor = Color.FromArgb(0, 0, 0, 0); //(a, r, g, b)
e.Graphics.FillRectangle(new SolidBrush(fillColor), e.ClipRectangle);
Run Code Online (Sandbox Code Playgroud)
这其实是比较有趣的。这意味着您正在绘制完全透明的东西 - 所以这绝对不会改变!:-)
猜猜:如果黑色 (0,0,0) 应该表示“玻璃”,那么绘制 (1,1,1) 以获得(几乎)黑色怎么样?
| 归档时间: |
|
| 查看次数: |
2876 次 |
| 最近记录: |