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. [Java] Solon 框架的三大核心组件之一插件扩展体系

    1.Solon 的三大核心组件 核心组件 说明 Plugin 插件扩展机制 提供"编码风格"的扩展体系 Ioc/Aop 应用容器 提供基于注入依赖的自动装配体系 Context+H ...

  2. 11. SpringCloud Alibaba Seata 分布式事务处理的详细使用以及详细剖析

    11. SpringCloud Alibaba Seata 分布式事务处理的详细使用以及详细剖析 先看一个问题,引出 Seata 单机单库(多表)处理事务示意图 分布式微服务架构下的数据库事务示意图: ...

  3. Jenkins+Coverage的代码覆盖率集成实践

    Jenkins+Coverage的代码覆盖率集成实践 一.工具介绍 Jenkins: Jenkins是一个开源的.基于Java开发的持续集成工具,它可以帮助开发人员自动化构建.测试和部署软件项目. C ...

  4. useradd usermod userdel passwd groupadd groupmod groupdel等命令详解

    linux命令参数记忆有些模糊了,记录下.学而时习之,不亦说乎? 1.useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是终极用户.创建新用户useradd,默认的用户家目录会被存放在/ ...

  5. JavaDoc文档的介绍及生成方法

    javaDoc命令是用来生成自己的API文档的 参数信息 @author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @return 返回值情况 ...

  6. Monaco Editor 中使用在线版 Copilot

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:文长 引言 现代软件开发中,代码编辑器的功能不断演进,以满 ...

  7. C#实现文件的压缩和解压缩

    原文链接:https://www.cnblogs.com/sunyaling/archive/2009/04/13/1434602.html 在C#中实现文件的压缩和解压缩,需要使用第三方的组建完成. ...

  8. C# Windows Service 安装与卸载

    安装与卸载的使用工具 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe (一般安装了.NetFramework 后就会有该 ...

  9. [ZJOI2015]幻想乡战略游戏 题解

    题目链接:\(luogu\) 声明变量: \(tr1/tr2\):原树/点分树,用链式前向星维护 求链长(包括求 \(lca\)) \(a_i\):原树欧拉序 \(st_{i,j}\):\(RMQ\) ...

  10. CH340区别

    CH340区别 CH340G  USB转串⼝,推出时间最早,需外挂晶振,应⽤最⼴SOP16 CH340C  USB转串⼝,内置晶振,引脚兼容CH340G SOP16 CH340E  USB转串⼝,内置 ...