惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
罗磊的独立博客
F
Fortinet All Blogs
人人都是产品经理
人人都是产品经理
量子位
V
Visual Studio Blog
Blog — PlanetScale
Blog — PlanetScale
M
MIT News - Artificial intelligence
B
Blog RSS Feed
腾讯CDC
博客园_首页
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
博客园 - Franky
S
SegmentFault 最新的问题
N
Netflix TechBlog - Medium
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
D
Docker
P
Privacy & Cybersecurity Law Blog
S
Securelist
V
V2EX
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
T
Tor Project blog
The Hacker News
The Hacker News
Microsoft Azure Blog
Microsoft Azure Blog
AWS News Blog
AWS News Blog
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
T
The Exploit Database - CXSecurity.com
Help Net Security
Help Net Security
酷 壳 – CoolShell
酷 壳 – CoolShell
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 叶小钗
Recent Announcements
Recent Announcements
Cloudbric
Cloudbric
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Latest news
Latest news
MongoDB | Blog
MongoDB | Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recorded Future
Recorded Future
V2EX - 技术
V2EX - 技术

博客园 - 赖仪灵

分享几个简单的WPF控件(代码) 捕捉WPF应用程序中XAML代码解析异常 设置WPF窗口相对于非WPF窗口的位置 上海.NET俱乐部--微软社区巡展VSTS上海专题活动 WPF关于WindowInteropHelper的一个BUG WPF全景体验 最优化WPF 3D性能(基于“Tier-2”硬件) Windows Vista桌面窗口管理器(3) 闲话WPF之二六(WPF性能优化点) 闲话WPF之二五(WPF中的ControlTemplate [3]) 闲话WPF之二四(WPF中的ControlTemplate [2]) Windows Vista桌面窗口管理器(2) 闲话WPF之二三(WPF中的ControlTemplate [1]) 闲话WPF之二二(WPF中的Style) 闲话WPF之二一(WPF中的数据处理 [3]) 闲话WPF之二十(WPF中的传递事件 [2] ) 闲话WPF之十九(WPF中的传递事件 [1] ) 闲话WPF之十八(WPF中的资源 [4] ) 闲话WPF之十七(WPF中的资源 [3])
Windows Vista桌面窗口管理器(1)
赖仪灵 · 2007-01-11 · via 博客园 - 赖仪灵

桌面窗口管理器是什么呢?它是Vista中的一个新组件:Desktop Window ManagerDWM)。它建立在WPF核心图形层组件基础之上。还记得我在第一个Post中所提到的Composition引擎吗?DWM的桌面合成就是建立在这个Composition引擎基础之上的新特征。它的出现几乎改变了Vista中应用程序的屏幕象素显示方式。

通过DWM的桌面合成,应用程序的显示不再是直接画到屏幕上,而是一个显示内存中的一个离屏Surface。然后由DWM将这些Surface合成显示到屏幕之上。

从用户体验的角度看,启用DWM后,提供的视觉效果有毛玻璃框架、3D窗口变换动画、窗口翻转和高分辨率支持。其中最明显的特征有:任务栏窗口的实时缩略图;Alt-TabWin-Tab组合键所看到的效果。 

 

 

桌面合成(Composition

Vista之前,Windows要求应用程序画自己的可见区域,它们可以直接画在显卡的视频缓冲里面。而在Vista,系统要求应用程序把整个表面画到离屏Surface当中。然后由DWM控制所有的离屏表面,并把它们合成到一起显示到真正的屏幕上。

现在计算机的图形芯片飞速发展,具有了很强的处理能力,现在它们主要用于游戏等方面。DWM的主要目标就是利用图形芯片的处理能力也给非游戏用户带来尽可能好的体验。因此DWM是基于DirectX,特别是Direct3D。更准备是说,DWM是直接建立在一个称为Milcore的层次之上。Milcore又建立在DirectX之上。最终是用Direct3D纹理来表示窗口内容和窗口框架。DWM/Milcore调用适当的Direct3D函数把所有的Direct3D纹理合成为最终的桌面。Vista桌面就可以理解为一个全屏幕的Direct3D应用程序。

从窗口系统的显示角度上看,这可以给我们带来很大的方便,帮助实现更高质量的视觉效果,比如:

1、访问窗口:现在所有的窗口都显示到离屏表面,这些离屏表面就可以用于其他的地方了。例如前面提到的Alt-Tab组合键所看到的缩略图,用户还可以据此实现一些其他需求。

2、窗口操作中不再涉及到背景应用程序:在Vista之前,如果隐藏的窗口变得重新可见,这部分区域只有在应用程序醒来后并响应了WM_PAINT才能被重画,这就引起了很多难看的效果。在Vista中,背景窗口不会收到WM_PAINT,也不会被要求提交,因为他们的内容已经在离屏表面当中了,可以被直接拿来进行重新合成。

3、更眩的用户体验,这个不用多说了,大家可以有自己的体验感受。

4、高分辨率支持:大部分应用程序不知道它所运行的显示器的分辨率。随着高分辨率显示器的普及,这会使应用程序在物理空间看起来越来越小,效果很差。由于DWM访问了窗口的离屏表面,其特殊的位置可以调整应用程序的显示分辨率,使它在高分辨率显示器上有更好的效果。