zoukankan      html  css  js  c++  java
  • 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包含减少开销的

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

  • 相关阅读:
    typescript-泛型-类型检查
    typescript-class-interface
    typescript-类class
    typescript-接口interface
    Oracle 密码过期
    VMware Redhat虚拟机扩容硬盘
    华硕 U系列电脑拆后盖注意事项
    VS + QT 出现 LNK2001 无法解析的外部符号 QMetaObject 的问题
    c++ _pFirstBlock == pHead
    c++ 套路多
  • 原文地址:https://www.cnblogs.com/SFAN/p/2741891.html
Copyright © 2011-2022 走看看