问题标签 [aero]

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.

0 投票
1 回答
929 浏览

winapi - win7上使用TrackPopupMenu的问题

我正在尝试在我的应用程序中使用 TrackPopupMenu 函数创建上下文菜单,我在其中使用的代码如下所示:

该代码在 WinXP 上运行完美,而在 win7 和 vista 上却没有。win7和vista的问题是弹出菜单需要相当长的时间,可能1分钟或更长时间。但是如果我在win7或vista上关闭Aero,它就像在winXP上一样运行流畅,所以我猜代码中一定与Aero冲突,但我不知道如何修复它。有没有人可以帮助我?如果有人帮助我,我将不胜感激。

0 投票
1 回答
522 浏览

user-interface - 你会如何在 UI 设计中使用 Aero 玻璃

我有许多在过去编写的实用程序,看起来非常过时。所以我最近开始让他们使用 Windows 主题,并希望加入一些 Aero 玻璃效果。

问题是,我不太确定合适的用途是什么。IE7 和现在的 Firefox 4 玻璃窗口的顶部包括工具栏,但这并不真正适用于我的情况。我见过许多应用程序只是增加了玻璃边框,但这只会使非玻璃内容显得局促。然后通常通过在屏幕上简单地增加几英亩的开放空间来处理。

将 Aero 效果融入屏幕设计的合适方法是什么?或者决定是否使用它?有什么好的设计参考可以解决这个问题,或者可能是智慧的金块?

更新: 澄清一下,这些不是我们的主要应用程序,而是一些执行此操作的实用程序屏幕。不太复杂,只是一个带有几个编辑控件和可能列表的表单。底部有一条纽扣。不过,作为一项规则,现在似乎在菜单和工具栏上使用 Aero 是标准的,但在没有工具栏的应用程序上,似乎没有我能找到的标准用法。

0 投票
3 回答
1070 浏览

c# - 等待禁用 aero 完成

我的应用程序可以通过在捕获屏幕图像之前调用 DwmEnableComposition(0) 来禁用 aero。如您所知,禁用 aero 会使屏幕变黑然后恢复正常。在不同的 PC 上,这可能需要 2 到 3 秒,具体取决于系统的速度。

有没有更好的方法来确定 aero 在屏幕捕获之前是否完全禁用而不是 Thread.Sleep()?

0 投票
1 回答
1907 浏览

windows-7 - 是否可以在 Windows Embedded Standard 7 中使用默认的 Windows 7 主题?

是否可以在 Windows Embedded Standard 7 上使用 Windows 7 默认主题(例如 Windows 7 Basic)?如果是这样,如何?

我相信主题包括通用控件样式,即它们为您的进度条提供“Aero”外观,而不是经典的 Windows 95 风格。

我的问题的上下文是 WPF 应用程序从 Windows 7 工作站迁移到 Windows Embedded Standard 7 嵌入式设备。

0 投票
4 回答
8665 浏览

delphi - Delphi 对 Aero Glass 和 DoubleBuffered 属性的支持 - 发生了什么以及我们如何使用它们?

我对 Delphi 2009/2010 对 Windows 中 Aero Theme Glass 功能的支持、DoubleBuffered 的确切含义以及它与 Aero glass 的关系感到困惑。我发现 DoubleBuffered 不仅是 VCL 中的一个属性,它也可以在.net WinForms中找到。最初我想知道它是否设置了公共控件库使用的某种窗口样式位,或者什么。为什么使用它,何时使用?

[更新:我应该声明我知道什么是“双缓冲”,作为一种减少闪烁的通用技术,我想知道的是,为什么它与 Windows Vista 中 Aero Glass 窗格上的渲染控件有任何关系/ Windows 7,特别是为什么所有事物的 BUTTON 都需要将双缓冲设置为 true,才能在玻璃上工作?下面链接的博客文章似乎信息量最大。]

尤其是对DoubleBuffered属性很困惑,想知道它为什么存在,它的玻璃支架和窗体、控件中的双缓冲属性是什么关系。当您阅读像这样的 C++ 文章时,您会发现没有提到双缓冲。

[更新2:以下内容包含一些事实错误,并已进行修改:]

我发现一些 C++ 开发人员谈论他们如何调用 SetLayeredWindowAttributes 以避免在经典 Win32 应用程序中打开 DWM/Aero 合成导致的“黑色变成玻璃”故障 [但是下面的博客链接告诉我这不再有效在 Windows 7 中,实际上只是在 Vista 中短暂工作,直到微软阻止它]。[Begin WRONG Idea] 我们不应该使用其他颜色,比如明亮的洋红色,然后把它变成玻璃透明色吗?[结束错误的想法]

什么时候应该设置和不设置 DoubleBuffered 的规则是什么,为什么首先将 DoubleBuffered 添加到 VCL 中?什么时候设置会出问题?(似乎远程桌面是一种情况,但这是唯一的情况吗?)当它没有设置时,我们会在按钮文本的渲染中出现故障,很可能是因为 Delphi 似乎没有更改默认的“将黑色渲染为玻璃“在 Aero DWM 中。

在我看来,Aero Glass 渲染从根本上是以一种奇怪或难以理解的方式完成的[由 Windows 本身,而不是仅包装此功能的 Delphi],并且 2009/2010 年的许多内部 VCL 源代码StdCtrls 中的类必须做很多复杂的逻辑才能在 Aero Glass 上正确渲染东西,但它仍然有很多问题,在我看来它做错了,这可能是这个相关问题和 qc 问题的背后。 [更新 3:玻璃上的许多渲染故障,在 VCL 中,在通用控件中渲染完成错误,微软似乎并不关心修复。简而言之,Delphi VCL 代码修复无法解决这样一个事实,即古老的 Windows 通用控件库和现代 [但古怪的] Aero Glass 合成功能彼此不太喜欢,并且不能很好地协同工作。感谢 Microsoft 构建了如此高质量的技术并将其释放到世界各地。]

如果还不够有趣;为什么我们有 ParentDoubleBuffered?

[7 月 30 日更新:这个问题对我来说很有趣,因为我认为它表明,当你有一个大型的现有 VCL 框架时,使用 Windows API 来解决这个问题是一个难题。]

0 投票
1 回答
4411 浏览

delphi - Glass 上的 Delphi 按钮 - 外观最佳的第三方按钮组件

我正在寻找一个设计用于运行 Vista 和 Windows 7 的 Aero Glass 的 Delphi 按钮,具有以下属性:

  1. 完全自绘的 TCustomControl 后代。

  2. 在带有 Aero 合成 (DWM) 的玻璃窗格上看起来不错 [以用户看起来像普通按钮的方式呈现,没有故障],按钮周围没有白色或黑色环,并且标题混乱没有问题由 Aero 组成。(这将敲掉任何没有写成玻璃感知的按钮。)

  3. TButton/TBitButton 的常用功能,包括到 TActions 的链接、对字形(位图/图片)的支持等。

可选的,很高兴具有以下功能:

  1. 透明度支持(可选,如果它可以是不透明的但在玻璃上干净地绘制会很好)。
0 投票
4 回答
5183 浏览

c# - WPF:使窗口无法调整大小,但保留框架?

我有一个没有标题栏 ( WindowStyle == WindowStyle.None) 的窗口。整个窗户采用 Aero 玻璃效果。当我将窗口设置为不可调整大小时ResizeMode == ResizeMode.NoResize((本质上,窗口本身消失了,但留下了它的内容。)

有没有办法让我在不摆脱窗框的情况下使窗口无法调整大小?


我已阅读问题Enable Vista glass effect on a borderless WPF window,但这不是我想要的——我想保留窗口边框。有关我希望我的窗口看起来像什么的示例,请在启用 Aero 的情况下按 Alt+Tab。


澄清一下,当悬停在窗口边框上时,我不希望调整大小的光标出现。这基本上就是我希望我的窗口看起来的样子:

投影仪

解决方案不必是严格的 WPF——我很乐意使用 Win32 API 来实现这一点。

0 投票
2 回答
915 浏览

c# - 如何实现无标题边框 Aero 窗口?

我知道如何删除表单的边框,但我只想删除标题。谷歌搜索 P/Invokes 并没有给我太多结果,所以我想知道,我怎样才能达到这样的结果?

替代文字

0 投票
3 回答
7683 浏览

winapi - Vista/7:如何获得玻璃颜色?

你怎么用DwmGetColorizationColor

文档说它返回两个值:

  • 0xAARRGGBB包含用于玻璃成分的颜色的 32 位
  • 一个布尔参数,“如果颜色是不透明的混合”,则为真(无论这意味着什么

这是我喜欢的颜色,漂亮的呕吐绿色: 替代文字

你可以注意到颜色是绿色的,半透明的标题栏(白色背景)非常清楚地显示鼻涕颜色: 在此处输入图像描述

我尝试从 Windows 获取颜色:

我得到

根据文档,此值的格式为AARRGGBB,因此包含:

据推测,这意味着颜色为 (10, 15, 4),不透明度约为 5.1%。

但如果你真的看这个 RGB 值,它与我想要的鼻涕绿色相去甚远。这是

  • (10, 15, 4) 不透明度为零(原始颜色),以及
  • (10,15,4),白色/棋盘背景不透明度为 5%:

替代文字

不是Lime绿色,而是DwmGetColorizationColor返回几乎完全透明的黑色

所以问题是:如何在 Windows Vista/7 中获得玻璃颜色?

我尝试使用DwmGetColorizationColor,但效果不是很好。


一个有同样问题的人,但是一张更好的闪亮图片来吸引你的松鼠: 替代文字

因此,它归结为 - DwmGetColorizationColor 对于试图将当前颜色应用到不透明表面的应用程序完全不可用。


我比我更喜欢这家伙的截图。以他的截图为模板,我又制作了一些闪闪发光的东西:

替代文字

替代文字

替代文字

替代文字

替代文字

替代文字

对于最后两个屏幕截图,alpha 混合芯片是真正的部分透明 PNG,与浏览器的背景混合。凉爽的!(我真是个极客)

编辑 2:必须以彩虹色排列它们。(我真是个极客)

编辑 3:现在我当然要添加黄色。


未记录/不受支持/脆弱的解决方法

在入口点 137 处有一个未记录的导出DwmApi.dll,我们称之为DwmGetColorizationParameters

我们对第一个参数感兴趣:ColorizationColor.

我们还可以从注册表中读取值:

因此,您选择创建 appcompat 问题的毒药。你可以

也可以看看


一年多来,我一直想问这个问题。我一直都知道这是不可能回答的,而让任何人真正关注的唯一方法就是拥有彩色截图;开发人员被闪亮的东西所吸引。但不利的一面是,这意味着我必须投入各种工作来制作诱饵。

0 投票
3 回答
3119 浏览

java - 结合 Aero Glass 效果和 SWT

作为一个宠物项目,我一直在尝试将 Aero Glass 效果集成到我的 SWT 应用程序中。Łukasz Milewski 有一篇很棒的博客文章解释了如何实现这一点,这几乎可以归结为:

这很好用,直到您想要添加控件。这导致黑色保持透明:

带控制的透明外壳

后续帖子也演示了如何执行此操作,但需要修改 SWT 库。(至少,我相信是这样,因为私有 SWT 函数被覆盖了@Override。)

如何避免控件变得透明?更好的是:我怎样才能从透明度中受益(例如像这样在上面放置图像),但是以一种明智的方式使用它?