和Winform不同,WPF的度量單位不是像素,而是設備無關單位DIU,其大小總是1/96吋

那麽,WPF中一個寬度爲96的按鈕,到底是多少個像素呢?

答:取決於系統DPI。

計算公式爲:實際像素 = 設備無關尺寸 * 系統DPI

這樣,在系統DPI爲96時(windows默認值),按鈕正好占用96像素;而系統DPI爲120時,將占用120個像素

像素尺寸有了,再已知屏幕DPI,就可以推算出物理尺寸了。

而屏幕DPI取決於屏幕尺寸和分辨率。比如:12.5吋筆記本,1366*768的屏幕DPI約125dpi;18.5吋臺式機,1366*768的屏幕DPI約85dpi

通常LCD顯示器有個自然分辨率,在該分辨率下顯示效果最佳,所以屏幕DPI可以説是固定的,設備出廠時就已經決定了。

姑且把屏幕DPI稱爲硬DPI(不大會變),而前面的系統DPI爲軟DPI(可以在控制面板中修改)。

説了這麽多,WPF度量系統的優勢在哪呢?

答:如果衹用默認的系統DPI,WPF的度量系統和Winform相比沒有優勢。因爲此時WPF的度量單位等同于像素,兩者的表現完全一樣。

不過當改變系統DPI的時候,WPF的優勢就體現出來了。

例如:當系統DPI增加到120時,WPF會自動增加像素尺寸,以顯示更多的細節,直觀上就是界面變大了,細節更清楚了;

而此時Winform的尺寸卻沒法自動變化,還是老樣子,雖然系統提供了更高的像素密度,但Winform卻無法顯示更多的細節。

不過WPF的這種方式有時也會帶來問題,比如:指定窗口的寬度爲1200,在默認的系統DPI下沒問題,但如果增加系統DPI,該窗口會超出屏幕範圍。

又比如圖片這種固定像素的元素,改變DPI後,WPF會拉伸圖片尺寸,反倒使得圖片變得模糊。

此時反倒是winform的固定像素方式不會出問題,所以孰優孰劣也要看場合。

WPF度量系統的更多相关文章

  1. 諾基亞定制的Android系統名為 Z Launcher

    N1這款產品似乎沒有諾基亞的傳統風格,搭載Android系統以及酷似iPad mini的外觀,都在向外界傳遞著一個信號:諾基亞在變化.不過,沒有了移動設備部門的諾基亞,仍然心系消費電子市場,N1會是個 ...

  2. 各廠商ERP系統架構圖連結 (ERP流程圖)(轉)

    各廠商ERP系統架構圖連結 (ERP流程圖)   資料來源 Google圖片搜尋ERP整理而來 資通電腦 ArgoERP 資通電腦 Oracle ERP 鼎新電腦 Workflow ERP鼎新電腦 S ...

  3. Linux-PAM(Linux下的密碼認證和安全机制)系統管理員指南(中文版)

    he Linux-PAM 系统管理员指南作者:Andrew G. Morgan, morgan@linux.kernel.org翻译:孙国清(Thomas Sun),thomassun@yeah.ne ...

  4. 如何讓Android系統顯示CJK擴展區漢字

    由於一些特殊需要,需要在個人設備上顯示CJK擴展區漢字,經多方詢問並驗證,找到了一下辦法,暫總結如下. 一.電腦上顯示 在電腦(Windows,Linux,Mac等系統)上可以通過安裝「花園明朝字體」 ...

  5. 判斷作業系統為 64bit 或 32bit z

    有時我們在開發Windows 桌面應用程式時,會發生一些弔詭的事情,作業系統位元數就是一個蠻重要的小細節,若您寫的應用程式在Windows 的32bit 作業系統上可以完美的運行,但不見得在64bit ...

  6. tomcat 注冊成操作系統服務

    nginx注冊成服務1.把srvany.exe和instsrv.exe拷貝到nginx安裝路徑下面.2.執行命令Command代碼instsrv Nginx D:\nginx\srvany.exe3. ...

  7. ubuntu系統如何啟動root用戶登陸?

    之前分享過關於這個問題的文章,現在自己在分享一個關於這個問題的文章給大家.為了學習Linux,一氣之下把win10的換成了ubuntu的系統.安裝就不給大家介紹了(網上很多教程). 在我們安裝好之後, ...

  8. oracle系統表、數據字典介紹與日常問題診斷

    oracle系統表.數據字典介紹與日常問題診斷 數據字典是由唯讀的table和view組成的,產生於$oracle_home\rdbms\admin\catalog.sql.裡面儲存Oracle資料庫 ...

  9. 開玩樹莓派(一):安裝Raspbian系統

    目錄: 開玩樹莓派(一):安裝Raspbian系統 開玩樹莓派(二):配置IP,實現無顯示器局域網內Putty連接和RDP遠程 開玩樹莓派(三):Python編程 開玩樹莓派(四):GPIO控制和遠程 ...

随机推荐

  1. nyoj_289_苹果_20140307

    苹果 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. ...

  2. N天学习一个linux命令之vmstat

    用途 查看系统资源整体使用情况,包括进程数量,CPU,内存,IO,swap等资源统计信息 用法 vmstat [options] [delay [ count]] 常用选项 -a 显示active/i ...

  3. Java UDP通信简单实现

    1.Java实现方式 1)server端 /** * UDPserver端 * */ public class UdpServer { // 定义一些常量 private final intMAX_L ...

  4. HDU 2206 IP的计算(字符串处理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2206 Problem Description 在网络课程上,我学到了非常多有关IP的知识. IP全称叫 ...

  5. 571B. Minimization(Codeforces Round #317)

    B. Minimization time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  6. AFNetworking 3.0携带參数上传文件Demo

    一.服务端代码: 服务端是java用国产nutz搞的,实际mvc框架都大同小异.就是提交文件的同一时候还带了个表单參数 @AdaptBy(type=UploadAdaptor.class, args= ...

  7. 2014年百度之星程序设计大赛 - 资格赛 第一题 Energy Conversion

    小记:long long %I64d 代码: #include <iostream> #include <stdio.h> #include <string.h> ...

  8. 转:Java阳历转农历

    package cloud.app.prod.home.utils; import java.text.ParseException; import java.text.SimpleDateForma ...

  9. dp状态压缩

    dp状态压缩 动态规划本来就很抽象,状态的设定和状态的转移都不好把握,而状态压缩的动态规划解决的就是那种状态很多,不容易用一般的方法表示的动态规划问题,这个就更加的难于把握了.难点在于以下几个方面:状 ...

  10. [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)

    /// <summary>/// 通过调用MSSQL的SQLDMO.DLL文件来实现备份数据库/// 1.首先在在项目中引用SQLDMO.DLL文件./// 2.在引用中的SQLDMO.D ...