问题标签 [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.
windows-7 - 桌面窗口管理器捕获整个屏幕
我想知道是否有人可以给我一个如何在 Windows Vista/7 中捕获整个屏幕的起点?我知道如何在以前版本的 Windows 中执行此操作,但我真的很想将所有内容都保留在 D3D 堆栈中,而不求助于 GDI/BltBit 调用。
我意识到如果你有使用 DWM API 的 HWND,你可以获得给定窗口的实时缩略图,但是你如何获得整个桌面的“缩略图”?
谢谢,
亚历克斯
winapi - 窗口截图
我正在尝试截取所有打开的窗口,以及最小化的窗口。目前我正在使用此代码: http: //www.developerfusion.com/code/4630/capture-a-screen-shot/
但它不适用于最小化的窗口以及自 Vista 以来出现 Glass 效果的区域,例如资源管理器标题栏是黑色的。谁能帮我吗?
我的目标是创建类似于 Flip 3D 的东西;如果有人也知道如何创建实时预览,那就太好了。
windows - 启用桌面合成是否需要双缓冲?
启用桌面合成后是否仍需要双缓冲?
在 Microsoft 的应用程序兼容性指南中:
图形设备接口 (GDI)
在 Windows Vista 和 Windows Server 2008 之前,窗口句柄 (HWND) 直接绘制到屏幕上,这有一定的好处,但限制了 Windows 显示和管理顶级窗口的方式。在 Windows Vista 和 Windows Server 2008 中,所有顶级窗口都被渲染为离屏位图(类似于 WS_EX_LAYERED),桌面窗口管理器将图像组合在一起以绘制桌面。
听起来现在所有的渲染都是在离屏位图上完成的:
窗口被渲染为离屏位图
它是否正确?
我问的原因是因为我在标准油漆周期中仍然看到闪烁:
- WM_ERASEBKGND
- WM_PAINT
启用桌面合成时:
我会假设在调用之间
所有的绘画都会发生在后台缓冲区:
窗口被渲染为离屏位图
同时,前缓冲区将不受影响。
wpf - WPF: How to have custom button template that uses system's button background by default?
I am creating a style that changes a ControlTemplate of a Button (it actually adds arrow on the right, so that the button looks like dropdown button (which is missing in wpf)).
Inside of template, I put the actual button (because I need the result to still be like button - I could change only ContentTemplate, but I need to display the actual content together with arrow, and putting ContentPresenter inside ContentTemplate yields stack overflow - wpf just expands the template into the presenter and goes on and on), together with arrow.
My problem is that I would like the user to be able to change button's background, so I need to bind Background="{TemplateBinding Background}"
. With this, the user would have to always provide the background, otherwise it would be null.
To prevent this, I understand I need to provide default value for the background, so I added <Setter Property="Background" Value="default Background goes here"/>
The question is, what should be a value of this setter? I assume that wpf's built-in styles are loaded automatically for every application, and I have looked into aero.normalcolor.xaml, where they provide ButtonNormalBackground
style, and later use it as default button style <Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/>
(aero.normalcolor.xaml, line 47).
Exactly what I wanted, however, when I use this setter, the static resource is not found. I then changed it to DynamicResource, but in that case, the button's background stays transparent - the ButtonNormalBackground isn't used!
How should I provide system's button look as default value? Thank you!
PS: dtto for BorderBrush, BorderThickness - geez, it seems that I am not allowed the tricks that WPF authors use all the time :/
My style:
windows - Windows Aero:要画什么颜色才能使“玻璃”出现?
为了使玻璃出现,我必须在客户区涂上什么颜色?
我已经使用以下方法将表单的框架扩展到客户区:
我找不到任何来自 Microsoft 的官方文档,说明 DWM 将寻找什么颜色和/或alpha来替换玻璃。DwmExtendFrameInClientArea上的文档甚至没有提到需要自定义颜色。只有传闻和神话甚至需要特殊的颜色。
我能找到的最接近的是 MSDN 上的一个主题:
使用 DWM 自定义窗框
为了使扩展帧可见,每个扩展帧边下的区域必须具有 alpha 值为 0 的像素数据。
更新:还有一篇博文:
面向开发人员的 Windows Vista – 第 3 部分 – 桌面窗口管理器
碰巧 RGB 黑色 (0x00000000) 的位模式与 100% 透明 ARGB 的位模式相同,因此您实际上可以使用“黑色”GDI 画笔进行绘制,并假设您已指示 DWM 模糊绘制区域,结果将是所需的玻璃效果。
如果我从字面上理解他们所说的(alpha 值为零的像素数据),我会构造一个 alpha 为零的颜色,并在扩展区域中绘制它:
但没有出现玻璃效果:
如果我忽略引用的 MSDN 主题,而是使用完全不透明的黑色(而不是完全透明的黑色):
玻璃效果确实出现了:
然后我被引导相信不透明的黑色是 DWM 将寻找用玻璃替换的像素值。
但是,我如何在玻璃区域上涂黑色物品?
我已经测试在玻璃区域上画一个黑色矩形,旁边有一个圆圈。奇怪的是,矩形没有出现,而圆形却出现了;两者都是相同的颜色:
那么世界上到底发生了什么?在扩展框架区域涂上什么颜色才能使玻璃出现?
更新 2
使用Adisak的建议来准确隔离 Aero 的愚蠢之处,在这里我在黑色圆圈内绘制了一个黑色矩形:
FillEllipse 不支持画黑圈吗?
更新 3
Pondidum想知道使用透明黑色调用Graphics.Clear是否会使玻璃可见:
它确实有效,但您仍然无法在玻璃上绘制不透明的黑色物品:
更新 4
查看Microsoft 的 Vista Bridge 库(围绕不会添加到 .NET 的 Vista 功能的托管包装器),他们只能设法让扩展玻璃框架在 WPF 表单上工作,而不是 WinForms。
也可以看看
windows-vista - 在 Vista 中关闭 Aero 的不良行为
我有一个 Directx9 应用程序,它需要在禁用 Aero 的机器上运行。该应用程序以窗口模式运行。首次创建窗口时,它在单个屏幕中看起来很好。当我以跨越连接到同一个图形适配器(和 GPU)的两个屏幕的方式移动窗口时,一个屏幕上的区域似乎反映了另一个屏幕上的区域。当我跨越连接到不同图形适配器的两个屏幕时,我没有问题。
任何标准的窗口应用程序都可以轻松复制这一点,例如 8 月 9 日 DirectX SDK 中的“教程 2:顶点”。
我在窗口化的 OpenGL 应用程序中看到了同样的问题。
当 Windows 在启用 Aero 的情况下运行时,这不是问题,但我需要在禁用 Aero 的情况下运行应用程序。(Aero 在我的实际应用程序中引起其他问题,由于我在 GPU 中进行的处理,在不可预测的时间翻转它自己的后缓冲区,以我的渲染线程无法检测到的方式搞砸了我的显示平滑度。)
我正在运行带有 nVidia Quatro 4800 显卡的 Windows Vista Enterprise x64。
--而且,我刚刚注意到这只是在我使用旋转屏幕时出现的问题,在 nVidia 控制面板中旋转了 90 度。我想……就这样吧?当我使用旋转屏幕时,任何人都可以提出解决方案吗?
有任何想法吗?
vb.net - Aeroglass 和 Visual Basic.Net
是否有任何教程,或者,是否有用于在 VB.NET 中控制 Aeroglass 的简单代码?我想知道如何玩各种效果,如果可能的话,如何在 Paint.NET 3.5 中完成 Aeroglass 效果。(顶栏的内侧不是直的。
winapi - Win7:如果禁用 Aero,辅助监视器的监视器 DC 会偏移
设想:
多显示器机器上的屏幕捕获。
辅助监视器的屏幕截图[这是唯一受影响的]
关闭 Aero:
通过以下方式为辅助监视器创建一个 [新] DC:
结果:
DC 将获得一个偏移量,该偏移量“指向”虚拟显示器的错误部分
在哪里DCOffset.x
和.y
将是!= 0
评论:
此行为不会在 Vista 上发生
如果 Aero Off 和 DC 创建之间存在延迟,则 DC 可能会在一段时间内正确 [== 无偏移],但如果移动窗口或更改其 z 顺序,则 DC 将获得偏移。解决方法:发生偏移时创建新的 DC。
受影响的图形适配器:Intel GMA 4500、Nvidia 9600GT
winapi - WinXP 上的 Flip-3D 和分层截图
我有两个问题,但不知何故相关:
如何在 Windows XP 上实现没有 Aero API 的翻转 3d?
你们在 Mac 上见过这个很棒的应用程序吗?http://layersapp.com有没有可能在 Windows 上有类似的东西?如果解决了#1 的问题,我想我们可以做类似的事情
我知道如何截取单个窗口的屏幕截图,只需阅读 DC 的位图。但是如何截取顶部未激活的那些窗口的屏幕截图?
wpf - Aero 是否有助于 WPF 性能?
我已经推迟了 WPF 开发很长一段时间,但是,我终于开始考虑继续前进了。我知道 WPF 是一种全新的渲染“机制”,它使用 GPU 的能力(对吗?),这与 Winforms 占用的 CPU 能力不同。如果我没记错的话,这种级别的 GPU 支持是 Aero 附带的,因此 WPF 应用程序只能在 Aero 环境中以全性能运行。它是否正确?我的意思是,如果我运行 WPF(有很多动画和玻璃),它在 Win 7 Home Basic 或 XP 上就不会运行,对吗?