一、名词解释

WPF(Windows Presentation Foundation),直译为Windows表示基础,是专门用来编写程序表示层的技术和工具。

大部分程序都是多层架构的,一般至少包含三层:

数据层:用于存储数据,多由数据库构成。

业务逻辑层:用于编写现实的业务逻辑。

表示层:负责把数据和流程以界面显示的形式展示给用户看。

相比其他技术,WPF引入了“内置硬件加速”和“分辨率无关”等创新功能。

二、硬件加速

WPF通过DirectX执行所有WPF绘图操作,以便充分利用现代显卡的最新功能。

在WPF问世之前,传统的Windows应用程序都依靠如下两部分来创建用户界面:

User32:该部分为许多元素(如窗口、按钮和文本框等)提供了熟悉的Windows外观

GDI/GDI+:该部分为渲染简单形状、文本以及图像提供了绘图支持,但增加了复杂程度(而且通常性能较差)。

后针对User32和GDI/GDI+的限制发行了 DirectX 技术,起初用于开发游戏,注重速度,由显卡支持,可以实现复杂的纹理映射、特殊效果(如半透明)以及三位图形所需的硬件加速功能。

WPF应用程序在底层都是使用DirectX,因此具有两大优势:①可使用丰富的效果②显卡硬件加速

三、分辨率无关性

传统Windows应用程序的用户界面,是不可伸缩的。如果使用更高的显示器分辨率,将会更紧凑地排列像素,应用程序窗口将变得更小并更难以阅读。即图像包含的像素数不变(精细程度不变),但图像大小会变。

而在WPF中,高分辨率显示器可显示相同大小的工具栏图标,但使用更多像素显示更清晰的图形,WPF会确保任何显示内容都能自动地具有正确的尺寸。即图像大小不变,图像包含的像素数会变(精细程度会变)。例如,如果在计算机显示器上创建一个1英寸宽的按钮,在更高分辨率的显示器上它仍能保持1英寸的宽度——WPF只是使用更多像素更详细地渲染这个按钮罢了。

下面介绍两种单位:

dpi(dot per inch,每英寸像素点数)。例如,一个最大分辨率为1600×1200像素的19英寸显示器,可用勾股定理算出其像素密度:

[屏幕DPI] = √16002+12002像素 / 19英寸 =100 dpi

WPF使用与设备无关的单位进行度量,一个与设备无关的单位被定义为1/96英寸,每个设备无关单位对应一个物理像素,转换关系如下:

[物理单位尺寸] = [设备无关单位尺寸]×[系统DPI] = 1/96英寸×100dpi = 1.04像素

下面介绍两种图:

位图,也称为点阵图像,使用我们称为像素的一格一格的小点来描述图像,因此缩放或旋转位图时会出现马赛克模糊或边缘锯齿状的现象。占用空间大。常见格式:*.bmp、*.pcx、*.gif、*.jpg、*.tif、*.png、photoshop的*.psd等。

矢量图,被定义为一系列的形状(点、线、面等构成),能够很容易地缩放为任何尺寸,而清晰度不变。占用空间小。常见格式:AdobeIllustrator的*.AI、*.EPS、*.SVG,AutoCAD的*.dwg、*.dxf,Corel DRAW的*.cdr等。

WPF中,最好使用矢量图。

本博文性质为读书笔记,并非纯原创,所参考和引用的书籍如下,特此注明。如转载,也请注明出处。

《WPF编程宝典——使用C# 2012和.NET 4.5(第四版)》,英文书名为《Pro WPF in C# 2012: Windows Presentation Foundation in .NET 4.5》。

WPF概述(硬件加速及分辨率无关性)的更多相关文章

  1. WPF的硬件加速

    wpf根据硬件 可以做出三档的渲染 dx7以下 第0档  不支持硬件加速 dx7-dx9 第1档, 不支持所有硬件加速,但支持一部分 dx9 以上 支持所有硬件加速 可以用编程的方式取代 当前设备处于 ...

  2. WPF 分辨率无关性原理

    WPF在计算窗口尺寸大小时使用的是系统的DPI设置.WPF窗口以及窗口中所有的元素都是使用设备无关单位度量.一个设备无关单位被定义为1/96英寸. [物理单位尺寸]=[设备无关单位尺寸]*[系统DPI ...

  3. 论wpf的设备无关性 - 简书

    原文:论wpf的设备无关性 - 简书 WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile ...

  4. 2000条你应知的WPF小姿势 基础篇<78-81 Dialog/Location/WPF设备无关性>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,00 ...

  5. WPF单位真的与分辨率无关吗?

    转载自http://www.cnblogs.com/helloj2ee/archive/2009/04/21/1440709.htm WPF从发布之日起,一直将"分辨率无关(resoluti ...

  6. WPF 概述

    WPF 全称是:Windows Presentation Foundation,直译为Windows表示基础.WPF是专门为GUI(Graphic User Interface)程序开发设计的. 在过 ...

  7. WPF学习(1)WPF概述

    WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于NET Framework 3.0的一部分.它提供了统一的编程模型 ...

  8. (1)WPF概述

    一.wpf特点 winfrom使用GID/GID+ 图形引擎,wpf使用directx的图形引擎 通过directx提供硬件加速 类型web的布局模型 丰富的绘图模型.文本模型, 支持音频视频 可创建 ...

  9. 理解WebKit和Chromium: 硬件加速之RenderLayer树到合成树

    转载请注明原文地址:http://blog.csdn.net/milado_nju ## 概述 在前面的章节中,笔者介绍了WebKit渲染引擎是如何有HTML网页构建DOM树.RenderObject ...

随机推荐

  1. word2vec_文本相似度

    #提取关键词#关键词向量化#相似度计算 from jieba import analyseimport numpyimport gensim # 实现给出任意字符串,获取字符串中某字符的位置以及出现的 ...

  2. 用visual studio 2017来调试python

    https://www.visualstudio.com/zh-hans/thank-you-downloading-visual-studio/?sku=Professional&rel=1 ...

  3. 2016年3月31日_应化所群体Review

    Review目的: Phonegap的ble插件可以接收到设备发送的信息,但接收并在控制台显示的数据夏一鸣不知道是正确的数据,还是由于编码解码问题导致的乱码问题.此次Review要解决的问题即判断接收 ...

  4. 449. Serialize and Deserialize BST

    https://leetcode.com/problems/serialize-and-deserialize-bst/#/description Serialization is the proce ...

  5. 2018.11.14 uoj#34. 多项式乘法(ntt)

    传送门 今天学习nttnttntt. 其实递归方法和fftfftfft是完全相同的. 只不过fftfftfft的单位根用的是复数中的东西,而nttnttntt用的是数论里面有相同性质的原根. 代码: ...

  6. 2018.10.24 NOIP模拟 小 C 的数组(二分+dp)

    传送门 考试自己yyyyyy的乱搞的没过大样例二分+dp二分+dp二分+dp过了606060把我自己都吓到了! 这么说来乱搞跟被卡常的正解比只少101010分? 那我考场不打其他暴力想正解血亏啊. 正 ...

  7. Le Chapitre VI

    Ah! petit prince, j'ai compris, peu à peu, ainsi, ta petite vie mélancolique. Tu n'avais eu longtemp ...

  8. PLSQL Developer对oracle中的数据进行备份恢复

    1.备份数据结构 --进入  工具-->导出用户对象  如图所示 把包括所有者的√去掉,到时候我们就可以随便建一个用户导入数据了,不一定非要scott用户   2.备份数据 工具-->导出 ...

  9. s5-12 RIP

    什么是RIP? RIP:Routing information protocol,路由选择信息协议 1988年,RFC1058 RIPv1:有类的路由选择协议 RIPv2:无类的路由选择协议,支持CI ...

  10. c# 动态数组-----“动态”数组

    其实在大多数工作中我们能通过前处理来确定我们的数组有多大,这样我们就可以声明相应大小的数组了.我感觉这种“动态”数组就够我用了.比如我要处理excel中数据,数据有m行*n列,这样我就可以通过读取ex ...