WPF学习笔记之-WPF概述篇(两大亮点)

WPF的两大亮点

一、硬件加速

WPF 图形显示是基于DirectX(最初是为游戏显示开发的图形显示引擎),而非GDI/GDI+。

WPF的目标是将尽可能多的工作交给显卡处理,所以复杂图形通常属于渲染范围(由GPU处理)而不属于处理器范围(由计算机的CPU处理)。也就是说,可以让CPU空闲下来去完成其他工作,充分利用显卡的功能,并且还可以充分利用未来新显卡所具备的不断增加的新功能。

WPF渲染级别(WPF TIERS)

显卡功能的区别是非常重要的。当WPF访问显卡时,它会考虑许多因素,包括显卡上RAM的数量、对像素着色器(pixel shader)的支持(显卡提供的计算每个像素效果的程序,如透明效果),以及对顶点着色器(vertex shader)的支持(显卡提供的计算每个三角形顶点数值的程序,如3D对象的着色)。根据这些细节,WPF会指定一个渲染级别值。

WPF提供了三个渲染级别,如下所示:

Rendering Tier 0:显卡将不提供任何硬件加速功能。该级别和7.0或更低版本的DirectX相对应。

Rendering Tier1:显卡可以提供部分硬件加速功能。该级别和7.0以上9.0以下版本的DirectX相对应。

Rendering Tier2:所有的特性都将被硬件加速。该级别和DirectX 9.0及以上版本相对应。

二、与分辨率无关

1、系统DPI:1英寸上的像素点(默认为96)。1英寸=2.54厘米

如何计算系统DPI:如图

23英寸-是包含边框的。

可视面积-是显示器显示板的大小,转换为英寸

509.184/10/2.54 = 20.04英寸 - 宽

286.416/10/2.54 = 11.28英寸 - 高

分辨率设置为1920×1080,则当前系统DPI:

1920/20.04 = 96

1080/1128 = 96

改变“显示”或“分辨率”设置,都会使系统DPI改变(非默认的96,一般显示器默认都为96)

WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都能很好地显示。微软之所以称WPF具备“分辨率无关”这一特性,主要是因为WPF的坐标单位设计成为以1/96英寸为一个逻辑像素单位,而不是与设备相关的像素单位。

(1)WPF在打印得时候可以做到“分辨率无关”,即同一个WPF用户界面和绘制的图形尺寸在任何一台打印机上输出都是一致的;

(2)当显示器实际象元的物理尺寸和系统设置的DPI保持一致的时候,WPF可以在显示器上做到“分辨率无关”,即同一个WPF用户界面和绘制的图形尺寸在任何一台显示器(实际象元的物理尺寸和系统设置的DPI保持一致)上输出都是一致的。反之则无法保证。

两台机器上的1英寸里的像素点个数一样,则上面显示的东西大小不会变。

两天机器的DPI不一样则显示的界面大小不一样

个人总结:只要设备的分辨率为默认分辨率,则WPF的元素尺寸在这些设备上都不会变。

时间: 2024-08-28 22:25:31

WPF学习笔记之-WPF概述篇(两大亮点)的相关文章

WPF学习笔记系列之一 (布局详情)

布局:StackPanel  栈布局:控件不会拐弯且多出的不再显示.DockPanel   停靠布局 吸在上边下边或左右.WrapPanel    环绕布局   一行控件会拐弯Canvas  进行基于坐标的布局 Grid中若不指定Grid.Row属性及Grid.Column则默认为:0行,0列.RowDefinitions ColumnDefinitions ShowGridLines=true <ColumnDefinition Width="100"></Colu

WPF学习笔记4&mdash;&mdash;Layout之2

下面简单介绍常见的面板. 一.Grid 1.Grid关于调整行列距离有三种方法:绝对大小,自动大小,比例大小.如下: <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></Co

WPF学习笔记2&mdash;&mdash;XAML之2

三.事件处理程序与代码隐藏 例如,为一个Page添加一个Button控件,并为该Button添加事件名称Button_Click: <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ExampleNamespace.ExampleP

【WPF学习笔记】之 System.Exception 对象名 &#39;XXXX&#39; 无效。

我在运行vs时候发现项目报错,如下图: 报Exception错误,对象名"XXXXXX"无效. 经过调查得知,因为连接数据库的库名写错了,如下: 对应正确数据库的库名: 把库名改正确,问题就解决了. [WPF学习笔记]之 System.Exception 对象名 'XXXX' 无效.

C#学习笔记 ----.NET体系结构概述

Microsoft 中间语言 Microsoft Intermediate Language MSIL简称 IL SDK 软件开发工具包 Software Development Kit IDE 集成开发环境 Integrated Development Environment .NET Framework 的核心 是运行库执行环境,称为公共语言运行库(CLR)或.NET运行库. 在.NET中,编译分为俩个阶段: (1) 把源代码编译为Microsoft 中间语言(IL) (2) CLR把IL编

【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型

[Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698.html 写作本系列文章时使用的是Unity5.3. 写代码之前: 当然啦,如果Unity都没安装的话肯定不会来学Unity Shaders吧? 阅读本系列文章之前你需要有一些编程的概念. 在VS里面,Unity Shaders是没有语法高亮显示和智能提示的,VS党可以参考一下这篇文章使代码高亮显示

现代C++学习笔记之二入门篇1

现代 C++ 强调: 基于堆栈的范围,而非堆或静态全局范围. 自动类型推理,而非显式类型名称. 智能指针而不是原始指针. std::string 和 std::wstring 类型(请参见 <string>),而非原始 char[] 数组. 标准模板库 (STL) 容器(例如 vector.list 和 map),而非原始数组或自定义容器. 请参见 <vector>.<list> 和 <map>. STL 算法,而非手动编码的算法. 异常,可报告和处理错误条

Python学习笔记&lt;一&gt;:概述

1.print语句输出和交互式解释器输出的不同 在下面的例子中,我们把一个字符串赋值给变量myString,先用print 来显示变量的内容, 之后用变量名称来显示. >>> myString = 'Hello World!' >>> print myString Hello World! >>> myString 'Hello World!' 注意:在仅用变量名时,输出的字符串是被用单引号括起来了的.这是为了让非字符串对 象也能以字符串的方式显示在屏

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp