WPF设备无关单位(DIU)

22 篇文章 2 订阅
1、关于WPF 单位

 WPF 为了保持应用程序窗口,在不同分辨率的显示器上,始终保持基本相同的布局;WPF所有元素都是使用与设备无关的单位(DIU)进行度量。由于UI设计师的显示器和开发人员的显示器的分辨率不经常是一致的,并且UI设计师,通常采用的是用“像素”来度量尺寸;所以需要进行转换;

2、关于分辨率的几个概念

在了解转换方法前,首先应了解几个基本概念
1)物理显示器DPI
 根据显示器的分辨率计算
在这里插入图片描述

2)系统DPI设置
 Windows10,可以在显示设置中进行缩放设置;进行缩放设置后,系统DPI设置与物理显示器的DPI值就不一样了。 注意:WPF也是根据系统DPI设置进行缩放的。
在这里插入图片描述

3)设备无关单位(DIU)
 一个与设备无关的单位被定义为1/96英寸。
 设想用WPF创建一个尺寸为96x96单位的小按钮,如果使用标准的window DPI设置(96dpi),每个设备无关单位实际上对应一个物理像素。因为对于这种情况,WPF用以下公式进行计算
在这里插入图片描述

 如果最大分辨率为1600x1200像素的19英寸LCD显示器,在没有进行缩放的情况下,可以用勾股定理算出这个显示器的像素密度,如下所示
在这里插入图片描述

UI设计输出的DPI
 通过是根据一定尺寸的设计的,如1920*1080;假设是根据21寸显示设计的, 则根据上述公式,1DIU=1.06Pix;
那么UI设计的元素尺寸转换方法:

UI 尺寸(Pix)/ 开发工程师设备DIU物理位 = 元素DIU尺寸
 换句话说,将系统DPI设为120dpi时,WPF渲染引擎假定设备无关的单位等于1.25个像素。如果显示器96x96DIU 大小的按钮,那么物理尺寸实际为120x120像素(因为96x1.25=120)。—在标准显示器上的大小为1英寸的按钮,在像素密度更高的显示器上仍然保持1英寸的大小。
 如果只用于按钮,这种自动缩放的意义不大。但WPF对它所显示的任何内容都是用设备无关单位,包括形状,控件,文本以及其他放在窗口中的内容。所以可将系统DPI改为任何所希望的数值,WPF将无缝地调整应用的尺寸。

需要注意的是,默认情况下,WPF的处理方式并非简单地将度量尺寸舍入为最接近的像素。如果像素的一条边落在连个像素之间,WPF将使用反锯齿特性将这条边混合到相邻的像素。这看起来可能是多余的选择,但是确实能改进视觉效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoBPage

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值