none
Essential Silverlight翻译连载---第一章 WPF基础 RRS feed

  • 常规讨论

  • 第一章      WPF基础

    当今很多的图形都是基于像素的。图像中的每个点都由一个像素描绘。在很多场合,这是一个非常好的解决方案,包括数码摄影技术(当您希望维持像机中的每个单元信息都可见),但这也有一些缺点。比如,如图1-1所示,当您在微软的画图软件中观察简单的文字。这些文字是基于像素的,在图1-2中,你看见相同的文字,但这幅图像的高和宽被放大了。你是否看到锯齿?所以,一张基于像素的图像被放大时将图像质量的下降。

    这显而易见,例如,当把一个100×100像素的图像放大为200×200像素。如何从10000像素变为40000像素呢?在原始图像中的1×1像素现在变为了2×2像素。绘图软件使用了一个十分简单的算法去改变图像的尺寸:如果图像尺寸变大,仅仅克隆像素。这就形成了锯齿。

    提示:专业的绘图软件如Adobe的Photoshop使用了几个复杂的算法来保证当图像尺寸改变时的质量损失(特别当缩小图像时);然而,当图像放大时,对图像的影响还是很明显的。

    解 决这些问题的办法之一是:矢量图。图像中的每一个元素都是几何对象:一条直线,一个多边形,一条曲线,这里只例举了少数名称。它最大的优势在于当改变图像 尺寸时不会导致质量损失:一个圆只需改变它的半径,仅此而已。它不会出现锯齿,因为它还是一个圆,而不是一个基于像素的图像,一系列在圆形中排列的像素。

    显然,并非所有的图像都可以用矢量描绘。我们再想想,理论上可以在肖像或风景中尽量找到几何元素或图案(这需要算法),但事实上不可能使用矢量去精确地描绘一幅图像。无论如何,矢量图像在计算机中的几个方面可以表现得更为真实。第一个方面是字体。如图1-3所示的Windows字体(符合图1-11-2中的字体)。大部分字体是矢量的,所以不管您使用8pt10pt12pt,还是100pt,它们的质量没有什么不同。如果在word中敲入字符并使字体变大,它的边缘仍然平滑。一旦您将文字粘贴到基于像素的图像处理软件(如画图)后,文字将失去矢量信息而变为像素。

    另外一个倾向于使用矢量的地方是用户界面(UI)。标准的UI大多数时候是兼容矢量的。它们很多时候需要被改变大小,所以在用户改变窗体大小时,它的内容仍然被完整无缺地保留。尽管如此,实际上,很少有UI是基于矢量的。

    WPF

    不久以前,Microsoft公司为它们的Vista操作系统(当然,跟之前的名称不同)设计一新的UI生成技术。这套系统基于矢量并使用XML技术。它最终命名为Windows Presentation FundationWPF)。

    矢量图形和XML

    有几个项目也在试图使用矢量(可能是一些动画或商业逻辑支持)来创建图形。时间最长的一个是World Wide Web Consortiums(W3C) 的Scalable Vector Graphics(SVG)。SVG图形是使用XML创建的,支持脚本,并支持除了Internet Explorer之外的大多数先进的浏览器。然而,SVG在市场上并非主流,它只在有限的地方获得了成功,包括移动电话和绘图。

    另外一个项目来自于Adobe公司,Flex使用了另外一种XML语言(叫MXML)来动态生成Flash。

    WPF.NET Framework 3.0的一个主要组成部分,它在Vista操作系统中被默认安装,并可以在Windows XPWindows 2003中作为插件下载。.NET3.0中的另外几个主要组成部分包括:

    WCFWindows Communication Foundation

    通讯子系统

    WCSWindows CardSpace

    数字身份子系统(译者注:原文是Digital identity subsystem,翻译可能不正确

    WFWindows Workflow Foundation

    工作流子系统

    WPF应用程序即可以运行在浏览器上也可以做为桌面应用程序单独运行。.NET Framework 3.0或更高版本应该都需要它。现在大多数的WPF应用程序被单独运行,因为Vista还没有达到很高的的市场占有率,另外下载.NET3.0需要花费太多时间。因此微软公司专门为浏览器创建了相似的技术:Silverlight。我们首先看看更多的关于WPF背景信息。

    WPF的焦点主要在矢量图上,但同样对基于像素的图形有很好的支持。WPF对于声音和视频数据也有很好的支持。它的一个亮点是对文字的支持,包括文字的排版比如文字对齐,字间距的调整和字母组合。

    你不必惊奇,所有的商业逻辑代码都使用.NET语言如C#Visual Basic来完成。.NET Framework非常严谨,CLR(公共语言运行时)---定义了WPF应用程序中的每种可能的元素并且使用Visual Studio将会有一个很好的编程体验(想想代码提示)和快速原型。同样,访问XAML所需要API提供了比XAML本身更多的功能,所以为了发挥出XAML/Silverlight的功效,你需要同时熟悉标语语言和编程语言。

    现在已经有几个使用WPF原型的项目,包括几个使用文字流显示的电子报纸,比如Forbes.com读物(如图1-4所示,可以在http://www.forbes.com/partners/microsoft/newsreader/下载)。另外一个是Yahoomessenger也将使用WPF界面技术。

    XAML

    是否如前面我们所讨论的那样,WPF是由XML来创建的呢?的确如此,为了达到这个目的使用了特殊格式的XMLXAMLeXtensible Application Markup Language)。它用于WPF应用程序中的UI标记。WPF运行时负责解释这些标记并显示标记,同时整合附加的商业逻辑代码(使用.NET语言如C#VB完成的代码)。

    微软提供了几个用于XAML开发的工具。您可以使用Visual Studio,但如果希望有更好的视觉体验,可以考虑使用Expression BlendMicrosoft Expression Suite产品的一部份)。.NET Framework 3.0 SDK还包括一个应用程序叫SAMLPad,可以用于分栏显示:即可以看到标记语言,也可以在显示代码的同时显示其效果,从而达到所见即所得的效果,如图1-5所示。

    当创建Silverlight应用时,无需担心是否已经安装了WPF,因为开发和浏览Silverlight时无需安装.NET Framework 3.0。尽管如此,您还是需要了解一些XAML方面的知识,因为SilverlightXMAL的一个子集。因此,第4章将介绍一些最重要支持SilverlightXAML元素

    进阶读物

    Programming WPF (http://www.oreilly.com/catalog/9780596510374/index.html) by

    Chris Sells and Ian Griffith (O’Reilly)


    My blog: http://blog.csdn.net/dotfun http://dotfun.cnblogs.com

    My contact: QQ:372900288 E-mail:372900288@qq.com msn:sellnet007@hotmail.com

    2009年3月11日 8:28
    版主