wpf的像素单位是1/96*系统dpi。当前系统dpi是96,那么wpf的一个单位长就是1px像素。这个系统dpi的意思就是物理单位一英寸里有多少个像素点,比如windows标准的96dpi,意味着一英寸有96个像素。则每个像素大小是1/96(英寸)。计算dpi的方法是(根号下(分辨率横向平方+分辨率纵向平方))/显示屏对角线尺寸(英寸位单位),比如27寸的2k显示器,dpi的计算就等于(根号下(2560*2560)+(1440*1440))/27。这个分辨率就是显示器横向2560个像素,纵向1440个像素。
  接下来,我们可以计算一个With=96的按钮在dpi等于96的系统上的按钮的物理英寸大小为96*(1/96*96)/96=1(英寸)。解释一下96*(1/96*96)表示这个按钮的长是多少像素,最后除以96表示除以的是dpi,得到的结果就是1英寸。比如一个dpi为192的系统,一个按钮长为96的按钮的像素值96*(1/96*192)=192px,192(px)/dpi192=1(英寸),虽然dpi增大了,一个长96的按钮的像素值是192px,但是它再除以192dpi,最终得到的结果还是物理尺寸1英寸。
  总的来讲,wpf的设备无关性,我的理解就是,无论系统的分辨率是多少,写按钮的Width=96,在这些不同的dpi的显示器上,这个按钮的物理尺寸长度的依然是1英寸。但是如果调整了dpi的倍数,比如120%dpi,那么按钮的物理尺寸就会相应的变长。
  在winform中,就会有这样的现象,应用在dpi为96的系统开发,然后放在dpi为85的系统C上,就会发现应用的系统的字体,控件长宽变宽了。这是因为本来a控件写Width=96,但是在C系统上,一英寸只需要85个像素,那么96/85>1英寸了,所以它看起来就变长了。同理,如果是放在dpi为192的系统M上,就会发现控件的长宽字体大小都缩小了一倍,就是因为96/192=0.5(英寸),它只有0.5英寸长了,缩小了一半。
这也是为什么windows会有放大dpi的功能,在120%放大,这个放大不是说dpi*1.2这样放大,而是放大的像素点的大小。那么放大后,相当与表示1英寸所需的像素点将会减少,因为像素点放大了,那么96标准dpi下的软件,在高dpi系统的120%倍放大效果下,它的物理尺寸就会被拉长,因为像素点的边大了,这样字体和控件大小更接近96dpi系统下的大小了。

wpf关于设备无关性的理解的更多相关文章

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

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

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

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

  3. WPF 与设备无关的单位

    WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都 ...

  4. WPF显示尺寸与设备无关问题

    WPF单位 WPF窗口以及其中的所有元素都是用与设备无关的单位进行度量.一个与设备无关的单位被定义为1/96英寸.WPF程序统一用下面一个公式来定义物理单位尺寸: [ 物理单位尺寸(像素)] = [ ...

  5. WPF概述(硬件加速及分辨率无关性)

    一.名词解释 WPF(Windows Presentation Foundation),直译为Windows表示基础,是专门用来编写程序表示层的技术和工具. 大部分程序都是多层架构的,一般至少包含三层 ...

  6. WPF 分辨率无关性原理

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

  7. Java的平台无关性

    转载自:http://www.cnblogs.com/Y/archive/2011/03/22/JavaVM_Learning_Chapter2_Platform_Independence.html ...

  8. Java是如何实现平台无关性的

    相信对于很多Java开发来说,在刚刚接触Java语言的时候,就听说过Java是一门跨平台的语言,Java是平台无关性的,这也是Java语言可以迅速崛起并风光无限的一个重要原因.那么,到底什么是平台无关 ...

  9. 【笨嘴拙舌WINDOWS】设备无关图(*.bmp)

    设备无关图在windows上面就是一个扩展名为.bmp的文件.我们知道每一种文件都是一个二进制流,只是这个二进制流的开头几个字节是规定了文件的格式..bmp的文件格式如下 “其中信息头是windows ...

  10. 深入Java虚拟机读书笔记第二章平台无关性

    Java的体系结构对平台无关的支持 Java平台 Java的体系结构通过几种途径支持Java程序的平台无关性,其中主要是通过Java平台自己.Java平台扮演一个运行时Java程序与其下的硬件和操作系 ...

随机推荐

  1. 外部H5唤起常用小程序链接规则整理

    概述 我目前工作是全职做小程序开发,所负责的小程序需要发布抖音+快手+微信+支付宝四端,年底了,公司准备做一波营销活动,营销活动更好传播的话首选H5活动营销页,这就需要考虑怎么把用户从H5页面引入到我 ...

  2. java-文件输入输出处理

    --------------------------------------------------- 1.File类 File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的 ...

  3. langchain-知识库问答

    本地接入 百川 langchain调用 参考:https://github.com/datawhalechina/self-llm/blob/master/BaiChuan/03-Baichuan2- ...

  4. CDN在互联网直播中的运用与性能优化

    本文分享自天翼云开发者社区<CDN在互联网直播中的运用与性能优化>,作者:不知不觉 随着互联网技术的不断发展,互联网直播已成为人们获取信息.娱乐.学习等多种需求的重要途径之一.然而,在直播 ...

  5. linux mint安装Scala

    Scala由java编写,需要前期安装jdk 面向函数式编程 1.下载 Scala 二进制包2.11.8 http://www.scala-lang.org/downloads 解压到/usr/loc ...

  6. Mac安装Kafka(依赖zookeeper)

    版本 kafka_2.11-2.0.0 flume1.8.0 一.软件下载 http://kafka.apache.org/downloads.htmltar -zxf kafka_2.11-2.0. ...

  7. 浏览器自动化与AI Agent结合项目browser-use初探

    browser-use介绍 browser-use是将您的 AI 代理连接到浏览器的最简单方式.它通过提供一个强大且简单的接口来实现 AI 代理访问网站的自动化. GitHub地址:https://g ...

  8. 百万架构师第四十课:RabbitMq:RabbitMq-工作模型与JAVA编程|JavaGuide

    来源:https://javaguide.net RabbitMQ 1-工作模型与Java编程 课前准备 预习资料 Windows安装步骤 Linux安装步骤 官网文章中文翻译系列 环境说明 操作系统 ...

  9. 【博客搭建】Hexo使用笔记

    [博客搭建]Hexo 使用笔记 Hexo 是一款前端博客框架,可以自动根据基于 Markdown 的文章生成博客网站代码. 基本概念 项目结构 目录 描述 _config.yml 网站的配置信息 th ...

  10. 基于Microsoft.Extensions.VectorData实现语义搜索

    大家好,我是Edison. 上周水了一篇 Microsoft.Extensions.AI 的介绍文章,很多读者反馈想要了解更多.很多时候,除了集成LLM实现聊天对话,还会有很多语义搜索和RAG的使用场 ...