问题标签 [aero-glass]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 结合 Aero Glass 效果和 SWT
作为一个宠物项目,我一直在尝试将 Aero Glass 效果集成到我的 SWT 应用程序中。Łukasz Milewski 有一篇很棒的博客文章解释了如何实现这一点,这几乎可以归结为:
这很好用,直到您想要添加控件。这导致黑色保持透明:
后续帖子也演示了如何执行此操作,但需要修改 SWT 库。(至少,我相信是这样,因为私有 SWT 函数被覆盖了@Override
。)
如何避免控件变得透明?更好的是:我怎样才能从透明度中受益(例如像这样在上面放置图像),但是以一种明智的方式使用它?
windows - 何时使用 DwmExtendFrameIntoClientArea?
众所周知,一些现代应用程序(IE9、Firefox 4、Chrome、Paint.NET 等)使用 DwmExtendFrameIntoClientArea 来实现 Aero 玻璃效果。
但是,您真正应该将它用于什么类型的应用程序?对于浏览器,我可以理解尽可能多地减少无关空间,但实际上,有什么意义呢?为什么不直接创建没有框架的窗口(就像没有 DWM 时 Google Chrome 所做的那样)?我只是在寻找一些关于什么类型的应用程序应该使用这种效果以及何时使用的粗略指南。
windows - 适用于所有 Win32 程序员的在 Windows Aero Glass(DWM、GDI、GDI+)上绘图的文档和 API 示例
我正在寻找很好的资源来学习使用 Win32/GDI API 或任何取代它的东西来直接使用 Win32 API 绘制和绘制玻璃窗体。
当我使用 Delphi 时,我将其标记为 Delphi 或 Visual C++。您可以找到任何代码示例和文章将不胜感激。MSDN 文章似乎没有写过这个。
作为一个目标,让我们假设您想要: (a) 重现 Google Chrome 的功能(标签作为玻璃框架的一部分) (b) 重现 MS Office 2010 的功能(玻璃框架上的保存按钮,在 MFC 中称为VS 2010,作为“快速访问工具栏”(见下图)。
我没有使用 MFC,但如果检查 MFC 源将是一个很好的信息来源,我很想知道 MFC 源或 BCG 原始源(我都有)在哪里实现了快速访问工具栏渲染/绘画代码。
更新:来自以下答案之一的相关neato链接显示了NC(非客户端)Paint消息,以及在玻璃框架上绘画时如何处理它,以及关于它的MSDN文章here。
delphi - Delphi 玻璃上的 Google Chrome 样式标签
我正在尝试在 Delphi 应用程序中实现 Windows 7 中的 Google Chrome 样式选项卡。
这其中的要素是:
- 选项卡可能会像在 google chrome 本身中那样延伸到非客户区。
- 启用 glass 时在 Vista 和 Windows 7 上正确绘制
- 标签就像谷歌浏览器一样工作,看起来像谷歌浏览器,在玻璃上。
我发现我必须克服的挑战是:
- 如何让控件(VCL 控件)扩展到非客户区?(执行此操作的控件的一个很好的示例是 VCL 源中包含的 Ribbon 控件,但我还没有看到其他人这样做,并且需要一些邪恶的黑客才能使 Ribbon 起作用)
- 如何在玻璃上正确绘制位图?(DWM API)。一个相关的问题已经回答了这个方面,在这里,我也问了这个问题。
aero - Aero:如何在玻璃上绘制纯色(不透明)颜色?
使用 GDI+ 绘制各种颜色:
您会注意到玻璃上没有正确显示不透明的颜色:
如何在玻璃上绘制纯色?
您还会注意到,完全不透明的颜色会根据它的颜色进行不同的处理:
- 不透明黑色:完全透明
- 不透明颜色:部分透明
- 不透明白色:完全不透明
谁能指出我在桌面合成器上解释如何处理不同颜色的文档?
更新 3
您还会注意到它的FillRectangle
行为不同于FillEllipse
:
FillEllipse
with an opaque color 绘制不透明颜色FillRectangle
使用不透明颜色绘制部分(或完全)透明
请解释无意义的行为。
更新 4
Alwayslearning建议我更改合成模式。来自MSDN:
合成模式枚举
CompositingMode枚举指定渲染颜色如何与背景颜色组合。此枚举由Graphics
Graphics::GetCompositingMode
类的'Graphics::SetCompositingMode'方法使用。指定在渲染颜色时,将其与背景颜色混合。混合由正在渲染的颜色的 alpha 分量决定。
指定在呈现颜色时,它会覆盖背景颜色。此模式不能与 TextRenderingHintClearTypeGridFit 一起使用。
从 的描述来看CompositingModeSourceCopy
,这听起来不是我想要的选项。从它施加的限制来看,这听起来像是我想要的选择。并且在禁用合成或透明度的情况下,它不是我想要的选项,因为它执行SourceCopy,而不是SourceBlend:
幸运的是,这不是我必须考虑的邪恶,因为它不能解决我的实际问题。构建我的graphics
对象后,我尝试更改合成模式:
结果对输出没有影响:
笔记
- Win32 原生
- 不是 .NET(即本机)
- 不是 Winforms(即原生)
- GDI+(即原生)
也可以看看
aero - Aero:如何在玻璃上绘制 ClearType 文本?
使用 GDI+ 在玻璃上绘制文字:
您会注意到启用 ClearType 的文本在玻璃上的绘制效果很差:
但是玻璃禁用了文本,当然,画得很好:
作为比较,这里是Anti-alias 字体平滑:
这里没有字体平滑:
注意:没有字体平滑看起来比实际效果更好,因为 StackOverflow 会调整显示器上的图像大小。
如何在玻璃上绘制 ClearType 文本?
笔记
- Win32 原生
- 不是 .NET(即本机)
- 不是 Winforms(即原生)
- GDI+(即原生)
Mark 的建议是你不能尊重用户对文本渲染的偏好(即“ SystemDefault
”。ClearType 在玻璃上不起作用,你不能使用它。
换句话说,如果您在玻璃上渲染,您必须使用以下命令覆盖文本渲染:
否则,您应该将其保留为TextRenderingHint
默认值TextRenderingHintSystemDefault
。
也可以看看
winapi - Windows Vista/7 玻璃完全破碎?
我正在尝试为应用程序获得媒体播放器玻璃效果,但我面临着各种障碍。是我,还是API?
我首先调用:
并将背景擦除为黑色:
一切都很好,直到我添加了一个编辑框。使用 EditBox,黑色文本出现的地方被玻璃代替。这个问题与 ComboBoxEx 等更高级的控件不成比例。那些开始看起来像一团糟。
这种方法的优点是 alpha 混合图像看起来不错。并逐渐融入玻璃。
编辑框的解决方案似乎是使用带有 LWA_COLORKEY 的 WS_EX_LAYERED 并使用一些可怕的颜色进行玻璃遮罩,并将背景擦除为该颜色。不幸的是,这破坏了其他事情。图标上的 alpha 混合看起来超级难看,阴影混合成放射性绿色,而且玻璃本身变得可点击,即使我在窗口上没有 WS_EX_TRANSPARENT 样式。
第三个建议是使用 GDI+ 进行自定义合成,但这似乎是一种不好的方法,因为 GDI+ 是一种软件回退,我找不到如何将 EditBox 或 ComboBoxEx 渲染为可用于合成的图像的方法之后。
我错过了什么吗?
vb.net - 如何在无边框的 Windows 窗体上获得 Aero Glass?
我正在尝试使用 DWM API 在 VB.NET 2010 应用程序中的表单中查看 Aero Glass,但正如函数调用所建议的那样,它将 Frame 的外观扩展到客户区域,如果表单没有边框,则不会发生任何事情并形成将变得不可见。那么,我可以得到无边框形式的 Aero 玻璃...... ??