从静态到动态 闲话Windows 7启动画面

系统
MSDNE7博客最近的一篇文章《EngineeringtheWindows7BootAnimation》介绍了Windows7的动态启动画面(BootAnimation)一些设计细节,写得很详细,推荐大家阅读。

MSDNE7博客最近的一篇文章《EngineeringtheWindows7BootAnimation》介绍了Windows7的动态启动画面(BootAnimation)一些设计细节,写得很详细,推荐大家阅读。笔者认为,Windows7的BootAnimation相比早期版本Windows的启动画面,已经逐步完成了由全静态到半动态、再到全动态的进化过程。在此,笔者并不想简单地直接翻译E7博客的原文,而是想结合对历代Windows启动画面发展历程的回顾,谈一谈笔者对Windows7BootAnimation的一些看法。

Windows启动画面的***形态:纯静态(Windows1.0-Windows3.0、WindowsNT3/4)

这一阶段的Windows启动画面都是不具有任何动态效果的纯静态画面,区别仅仅是颜色数的不同,从双色到16色而已。特别是WindowsNT根本就没有设置启动画面,仅有一个显示CPU及内存信息的蓝屏。

Windows启动画面的第二形态:半动态(Windows9X/ME、Windows2000/XP/Server2003、WindowsVista/Server2008)

从Windows95的启动滚动条开始,启动画面开始加入了动态效果。但是这一阶段包括WindowsVista/Server2008在内的所有Windows启动画面,充其量只能算是半动态。为什么这么说呢?

《多啦A梦》一集中,大雄借用多啦A梦的“动画片制作机”自己制作动画片。多啦A梦问大雄:你知道动画片是怎么动起来的么?大雄回答:我不知道,大概是手里拿着一幅画,在镜头前来回晃悠吧。多啦A梦晕倒~-_-

Windows第二形态的半动态启动画面实际采用的就是这种来回晃悠式的“大雄原理”。看似动态的滚动条其实本身只是一幅静态的位图,只不过在规定的滚动条轨道范围内不停地做着从左至右的晃悠动作而已。

Windows9X/ME的启动画面实际是一幅320×400、256色的BMP位图,在画面下方的小窄条范围内,设置这一范围内的位图颜色表有规律地不停变换,使得这一小窄条范围内的滚动条看起来好像在连续不断地从左向右滚动。在Windows9X/ME时代很多人将自己修改的256色BMP位图重命名为C:LOGO.SYS以替换默认启动画面,替换后却发现新启动画面丢失了滚动条动画效果,原因就是新位图没有设置颜色表的自动变化。

Windows2000/XP/Server2003则将启动画面背景与滚动条分为两个静态的BMP位图,分别保存在NTOSKRNL.EXE的位图资源里。启动Windows时,NTOSKRNL.EXE将把640×480、16色的静态位图设置为启动画面背景,也就是我们看到的黑色背景、WindowsLOGO及滚动条轨道框,然后再将滚动条的静态位图放置在轨道框范围内,令其不停地从左至右晃悠。这样就拼成了一幅半动态Windows启动画面。

WindowsVista/Server2008的启动画面与Windows2000/XP/Server2003如出一辙。***的改动我们众所周知,就是删除了背景图片中的WindowsLOGO,变成了一大片黑屏,仅仅剩下了一个光秃秃的MicrosoftCorporation字样及滚动条。另外,滚动条的颜色数则由16色提升至16位色,但是这也无关紧要了,一般用户只能对大面积的黑屏留下深刻印象,根本看不出小小的滚动条提升至16位色有何变化。

Windows启动画面的第三形态:全动态(Windows7)

看过Windows7那个红黄绿蓝四个小球逐渐融合变化为WindowsLOGO的BootAnimation的朋友们都知道,这种复杂的动画效果肯定无法用“大雄原理”将静态位图来回晃悠着实现。复杂的动画效果必须采用动画片真正的制作原理,即以不低于25FPS的频率将彼此之间相差较小的一系列位图按顺序依次播放,利用人眼的视觉延迟产生动画效果。

根据E7博客提供的信息,Windows7BootAnimation分辨率由640×480提升至1024×768、颜色数则扩展为32位真彩色。但是,与早期版本的Windows一样,Windows7BootAnimation依然只提供一种固定的分辨率,如果我们的液晶显示器标准分辨率不是1024×768,甚至不是4:3显示比例,那么就只能拉伸画面以充满整个屏幕,这将不可避免地造成画质下降与变形(宽屏显示器)。另外,如果显示器的标准分辨率低于1024×768(包括长宽只有一个低于的情况,例如1024×600的小尺寸NetBook),那么Windows7BootAnimation也将无法显示,只能显示WindowsVista的640×480的半动态启动滚动条画面(估计没有比640×480再小的NetBook了)。

由于显示BootAnimation时Windows7尚未完成启动,显示驱动程序也未初始化,所以BootAnimation将不依靠显卡、而是由CPU来实现,通过更新缓冲区完成图形显示。这样做肯定会加重CPU的工作负担,因此Windows7采用了一系列优化措施以改善此问题:

1.设置CPU使用写聚合缓存(Write-CombinedCaching)加速图形处理;

2.采用BMP资源整合的方式压缩保存BootAnimation所需图片资源,然后再经过WIM压缩以减少资源文件体积及读取时所需的I/O操作;

3.为了尽量适用于各种高低档次不同的硬件配置,BootAnimation采用了异步运行的启动方式,在关键I/O操作完毕之后再加载BootAnimation以避免拖慢启动,因此在某些配置较低的计算机中,可能会看到BootAnimation在系统启动了一段时间后才出现;

4.BootAnimation首先显示面积较小的四个小球、然后再逐渐融合为完整的WindowsLOGO的设计也有其独到之处,四个小球小空间的限制可以减少CPU的工作量、尽量避免刚刚启动加载系统文件时的延迟,等到初步的系统文件加载完毕后再显示空间较大的WindowsLOGO(这个设计令人叫绝);

5.尽量减少可能会延迟图形模式子系统及WindowsShell初始化的图形模式转换,这可以有效减少WindowsVista在启动画面与欢迎屏幕之间的黑屏延迟现象。

此外,Windows7还取消了WindowsVista介于启动画面与欢迎屏幕之间的PearlAnimation,就是那个具有动态效果并伴随有悦耳启动提示音的WindowsLOGOPearlAnimation,这主要是出于节省启动时间考虑(怪不得Windows7总自夸比WindowsVista启动得快,这部分时间应该算作弊^_^)。WindowsVista受限于自身的限制,这个PearlAnimation只能在全部启动步骤完成之后才能运行。现在,既然Windows7已经在启动画面中实现了全动态、也就没有必要再保留这个PearlAnimation了。

至于那个悦耳的启动提示音,Windows7也将其改为异步启动方式,它将受计算机配置高低影响,在欢迎屏幕出现之前随机播放出来。在WindowsVista中,启动提示音是固定与PearlAnimation一同出现的,在某些启动较慢的低配置计算机中,可能会出现影音不同步的问题,即已经听到了提示音、但PearlAnimation还没有显示出来。笔者安装在虚拟机中的WindowsVista就经常出现这种问题。Windows7的异步启动方式是一个明显的改进。

当然,如果我们还想在Windows7中使用PearlAnimation也不是没有办法,下载本文附件处提供的PearlAnimation小程序,通过组策略编辑器将其添加至系统启动脚本即可(注意不是用户登录脚本,否则无法在登录之前运行)。通过这种方法,我们甚至可以为WindowsXP也添加上PearlAnimation。不过,笔者提供的这个PearlAnimation小程序没有声音,对Windows7影响不大,至于WindowsXP就只能运行无声的PearlAnimation了。

【编辑推荐】

  1. Windows 7 vs.Vista:游戏测试
  2. IE 8进入Windows 7开发阶段
责任编辑:庞桂玉 来源: 华军
相关推荐

2009-02-20 09:17:27

Windows 7启动画面构思

2009-12-02 08:56:07

Windows 7启动画面

2009-04-08 10:51:59

Windows Emb

2010-11-04 18:11:35

UI设计SilverlightWindows Pho

2009-03-06 14:39:20

LinuxUbuntuUsplash

2011-07-26 15:56:53

iPhone 游戏 启动画面

2009-02-18 20:25:08

XPWindows 7升级

2020-05-05 23:05:53

物联网静态产品动态服务

2014-04-21 16:24:33

Web启动画面

2009-02-23 09:19:33

windows 7启动画面

2010-11-23 10:51:45

UI交互设计产品管理

2009-02-26 09:38:50

Ubuntu 9.04启动画面发布

2009-04-22 21:24:14

Bootsplash嵌入式启动画面

2011-08-19 14:47:48

iPhoneiPhone4iPad

2021-01-13 09:16:20

编程页面画面

2009-03-17 08:20:56

微软Windows 7改变

2013-12-06 11:23:17

Windows 8.1Windows 8Windows 7

2018-07-25 08:40:44

WindowsKotlin云原生

2011-05-04 11:31:09

Windows PhoWindows Pho游戏开发

2010-01-20 09:11:56

点赞
收藏

51CTO技术栈公众号