和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. PAT 1118 Birds in Forest

    Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...

  2. Delphi 10.3.2最新消息

    官方已经发布消息,招内测人员了! https://www.barnsten.com/default/newsupdates/details?news_id=328 https://docs.googl ...

  3. 【Codeforces 459D】Pashmak and Parmida's problem

    [链接] 我是链接,点我呀:) [题意] 定义两个函数 f和g f(i)表示a[1..i]中等于a[i]的数字的个数 g(i)表示a[i..n]中等于a[i]的数字的个数 让你求出来(i,j) 这里i ...

  4. 2.3. Configuring sudo Access-RedHat

    https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Get ...

  5. [bzoj1634][Usaco2007 Jan]Protecting the Flowers 护花_贪心

    Protecting the Flowers 护花 bzoj-1634 Usaco-2007 Jan 题目大意:n头牛,每头牛有两个参数t和atk.表示弄走这头牛需要2*t秒,这头牛每秒会啃食atk朵 ...

  6. data object audit

    客户提出了一个需求.想对一个表做audit. 本来这是非常简单的一个case,因为oracle自带的 audit功能就可以非常方便的实现.  实现的方式如下: BEGIN DBMS_FGA.ADD_P ...

  7. PHP array_intersect_key()

    定义和用法 array_intersect_key() 函数使用键名比较计算数组的交集. array_intersect_key() 返回一个数组,该数组包含了所有出现在被比较的数组中并同时出现在所有 ...

  8. CF #321 (Div. 2) D

    不说了,爆内存好几次,后来醒起状态有重复... 状压+TSP #include <iostream> #include <cstdio> #include <cstrin ...

  9. HDU 3473

    分析可知,最优的x应该在区间中的数排列后最中间的地方选择.由于区间的数个数有奇偶之分,于是当奇数个时,就是中位数了.偶数个时,就是排列后中间两数区间的任意一个. 可以应用划分树求得前半部分,树状数组统 ...

  10. 2.6-NAT

    2.6-NAT     网络地址转换协议NAT(Network Address Translation):     交换和远程都要用,先上什么就放在哪一块讲,具体来说NAT还是属于远程的.       ...