• WPF学习01——分辨率的无关性


      理想情况下,应用程序应用更高的像素密度显示更多的细节:一个高分辨率的显示器可以显示相同大小的工具栏图标,但使用更多的像素显示更清晰的图形。

    从而可以保持相同的基本布局但增加了清晰度和细节。WPF根据系统DPI设置进行缩放,而不是根据物理显示设备的DPI进行缩放来实现上述效果。

      WPF单位

      WPF使用设备无关单位(Device-Independent Unit)进行度量,一个设备无关单位被定义为1/96英寸。例如:使用WPF创建一个尺寸为96×96单位的按钮,如果使用标准的Windows DPI(96dpi)设置,

    每个设备无关单位实际上对应一个物理像素。

      [物理单位尺寸]=[设备无关单位尺寸]×[系统DPI]

             =1/96英寸 × 96dpi

             = 1 像素

      本质上,WPF假定使用96个像素构成1英寸,因为这是Windows操作系统通过操作系统DPI设置告诉WPF的。

      系统DPI

      WPF本身支持系统DPI设置,例如:如果系统将DPI设置改为120dpi,WPF假定它需要120像素来填满1英寸的空间,WPF使用以下公式计算如何将逻辑单位转换为物理设备像素:

      [物理单位尺寸]=[设备无关单位]×[系统DPI]

             =1/96英寸 × 120dpi

             1.25像素

      换句话说,将系统DPI设置为120dpi时,WPF渲染引擎假定一个设备无关单位等于1.25个像素。

      位图和矢量图形

       如果准备在应用程序中包含图像,可能会出现问题。例如在传统的windows应用程序中,工具栏命令按钮使用非常小的位图,wpf应用程序中会根据系统DPI进行放大缩小时,位图

    可能会出现伪影。所以,设计WPF用户界面时,即使是最小的图标,也通常使用矢量图形来实现。当然,相对于绘制一幅位图,绘制矢量图需要消耗更长的时间,但WPF包含减少开销的

    优化措施,以确保性能处于合理的范围内。

  • 相关阅读:
    批处理(bat)的一些记录
    在 Docker 中已运行的 container 如何修改 run 时的 env
    Linux 的一些命令记录
    Javascript aop(面向切面编程)之around(环绕)
    dojo Provider(script、xhr、iframe)源码解析
    dojo/request模块整体架构解析
    require、module、exports dojo中的三个特殊模块标识
    CSS垂直居中总结
    Javascript图片裁切
    CSS Font知识整理总结
  • 原文地址:https://www.cnblogs.com/SFAN/p/2741891.html
Copyright © 2020-2023  润新知