青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

我們知道,關(guān)于高DPI的支持, Windows XP時(shí)代就開(kāi)始有了, 那時(shí)關(guān)于高DPI的支持比較簡(jiǎn)單, 但是從Vista/Win7 到現(xiàn)在Win8 /Win8.1, Windows關(guān)于高DPI的支持已經(jīng)發(fā)生了很大的變化, 下面我們依次簡(jiǎn)單介紹下。

如果說(shuō)以前XP時(shí)代我們還有理由不關(guān)注高DPI,  那么在移動(dòng)設(shè)備時(shí)代和大顯示器的高分辨率時(shí)代, 我們就沒(méi)有理由不關(guān)注高DPI了, 比如Surface Pro的分辨率是1920x1080, 這種情況下如果系統(tǒng)我們不設(shè)置高DPI, 基本上就沒(méi)法觸摸和操作了,所以現(xiàn)在普通程序?qū)Ω逥PI的支持已經(jīng)成為趨勢(shì)了。 

什么DPI? 全稱是dots per inch (DPI), 也就是每英寸的點(diǎn)數(shù),在顯示器上就是每英寸的像素個(gè)數(shù),Window上一般默認(rèn)是96 dpi 作為100% 的縮放比率, 但是要注意的是該值未必是真正的顯示器物理值, 只是Windows里我們的一個(gè)參考標(biāo)準(zhǔn)。

下面我們思考為什么DPI設(shè)置高了之后, 我們看到的字體會(huì)變大? 因?yàn)橄到y(tǒng)字體是是以固定大小(宋體10號(hào)字,物理尺寸為(10/72)英寸)設(shè)計(jì)的, 當(dāng)我們DPI設(shè)置高了之后 ,說(shuō)明該字體要占有更多的像素, 在屏幕分辨率不變的前提下, 看起來(lái)也就大了。所以如果我們?cè)O(shè)置高DPI,通常也意味著我們的顯示器是高分辨率, 里面的字體看起來(lái)太小了, 我們需要提高DPI來(lái)把內(nèi)容放大。

那么我們的程序如何才能支持高DPI? 對(duì)于高DPI的支持, 不同操作系統(tǒng)有不同的方案。通常來(lái)說(shuō)如果我們程序支持高DPI, 意味著我們要對(duì)繪畫(huà)的內(nèi)容進(jìn)行相應(yīng)的放大, 比如字體,圖片和控件等。當(dāng)然, 如果我們用的是系統(tǒng)字體(比如GetStockObject(DEFAULT_GUI_FONT)), 那么這種情況下我們不用操心, 因?yàn)橄到y(tǒng)會(huì)對(duì)該字體在高DPI時(shí)進(jìn)行相應(yīng)的放大; 如果我們是用CreateFont自己創(chuàng)建的字體, 那就要我們自己對(duì)該字體進(jìn)行放大了。

下面我們看XP是如何對(duì)高DPI進(jìn)行支持的? 

XP對(duì)高DPI的支持比較差勁, 大部分情況下就是字體的放大, 當(dāng)然我們程序也可以通過(guò)GetDeviceCaps(hDC, LOGPIXELSX)獲取DPI后自己對(duì)繪畫(huà)的內(nèi)容進(jìn)行縮放。

下面我們看Vista/Win7/Win8是如何對(duì)高DPI進(jìn)行支持的?

我們知道Vista/Win7我們可以禁止DWM(Desktop Window Manager), 該模式我們稱之為Basic模式, 這種模式下的高DPI效果和XP一樣。

對(duì)于DWM沒(méi)有禁掉的情況, Vista/Win7/Win8 對(duì)高DPI的支持又分為2種情況, 具體看下圖: 

一種XP風(fēng)格的高DPi支持, 這種方式我們上面討論過(guò)了;
還有一種是通過(guò) DWM 虛擬化支持的 高DPI方式, 下面我們討論下該方式: 

該種方式的高DPI支持是通過(guò)DWM的縮放實(shí)現(xiàn)的, 具體過(guò)程是這樣的, 比如我們當(dāng)前系統(tǒng)的DPI是200%, 我們程序運(yùn)行時(shí),系統(tǒng)會(huì)告訴你當(dāng)前DPI仍然是96(100%), 所以我們程序會(huì)仍然按照100%的方式進(jìn)行繪畫(huà), 但是但是系統(tǒng)給我們的坐標(biāo)是根據(jù)DPI縮小過(guò)后的(也就是我們對(duì)窗口調(diào)用GetWindowRect或是通過(guò)GetSystemMetrics(SM_CXSCREEN)得到的大小會(huì)比實(shí)際大小減半) , 當(dāng)我們畫(huà)完之后, DWM再對(duì)整個(gè)窗口進(jìn)行200% 放大后畫(huà)到屏幕上, 這樣看起來(lái)我們的程序就自動(dòng)支持高DPI了。

 這種方式看起來(lái)很美妙, 但是它也有缺點(diǎn), 主要是經(jīng)過(guò)縮放后的內(nèi)容看起來(lái)會(huì)變模糊, 比如文字會(huì)有明顯的鋸齒。

既然DWM虛擬化用戶效果有時(shí)不是那么好, 那么我們很多時(shí)候可能會(huì)自己支持高DPI, 如何讓我們的程序禁用該效果?
事實(shí)上我們可以對(duì)每個(gè)進(jìn)程對(duì)DWM虛擬化的支持進(jìn)行設(shè)置和查詢, 系統(tǒng)給我們提供了2個(gè)APi: SetProcessDPIAware  IsProcessDPIAware , 通過(guò)調(diào)用SetProcessDPIAware , 我們告訴系統(tǒng)不要對(duì)我們的程序進(jìn)行DWM虛擬化。

這里還有特殊情況也提一下: 我們?cè)诟逥PI下通過(guò)窗口句柄取到的坐標(biāo)信息是和目標(biāo)程序是否支持DWM虛擬化相關(guān)聯(lián)的, 我們對(duì)支持DWM虛擬化的程序窗口調(diào)用GetWindowRect, 取到的坐標(biāo)也是經(jīng)過(guò)DWM縮放后的坐標(biāo); 對(duì)禁用DWM虛擬化程序的窗口調(diào)用GetWindowRect, 取到的坐標(biāo)則是沒(méi)有經(jīng)過(guò)縮放的原始坐標(biāo)。

 最后我們?cè)儆懻撓耊in8.1 對(duì)高DPI的支持, WIn8.1對(duì)高DPi以3種方式支持 Process_DPI_Awareness : 
typedef enum _Process_DPI_Awareness { 
  Process_DPI_Unaware            = 0,
  Process_System_DPI_Aware       = 1,
  Process_Per_Monitor_DPI_Aware  = 2
} Process_DPI_Awareness;
下面我們依次討論這3種方式: 

第一種Unaware, 該種方式是告訴系統(tǒng), 我的程序不支持DPI aware, 請(qǐng)通過(guò)DWM虛擬化幫我們實(shí)現(xiàn)。 該方式和上面Win7/Win8對(duì)高DPI的支持的實(shí)現(xiàn)基本一樣,主要區(qū)別是它通過(guò)GetWindowRect取到的坐標(biāo)都是經(jīng)過(guò)DWM縮放后的, 無(wú)論對(duì)方窗口是不是支持DWM虛擬化。

第二種方式是System DPI aware, 該方式下告訴系統(tǒng), 我的程序會(huì)在啟動(dòng)的顯示器上自己支持DPI aware, 所以不需要對(duì)我進(jìn)行DWM 虛擬化。 但是當(dāng)我的程序被拖動(dòng)到其他DPI不一樣的顯示器時(shí), 請(qǐng)對(duì)我們先進(jìn)行system DWM虛擬化縮放。

第三種方式是Per Monitor DPI aware, 該方式是告訴系統(tǒng), 請(qǐng)永遠(yuǎn)不要對(duì)我進(jìn)行DWM虛擬化,我會(huì)自己針對(duì)不同的Monitor的DPi縮放比率進(jìn)行縮放。

再介紹下相關(guān)API:
SetProcessDpiAwareness :設(shè)置當(dāng)前進(jìn)程對(duì)高DPi的支持方式
GetProcessDpiAwareness :查詢某個(gè)進(jìn)程對(duì)高DPI的支持方式
GetDpiForMonitor : 獲取某個(gè)Monitor的DPI
WM_DPICHANGED :當(dāng)某個(gè)程序窗口被拖到另外一個(gè)DPI的Monitor時(shí)收到

最后,簡(jiǎn)單總結(jié)下, 從上面我們可以看到微軟在不同操作系統(tǒng)上對(duì)高DPI支持的改進(jìn)線路,很多方面也體現(xiàn)了他們對(duì)老程序兼容性上的考慮, DWM虛擬化雖然很簡(jiǎn)單, 卻丟失了用戶體驗(yàn)。  

PS, 我在我機(jī)器上測(cè)試發(fā)現(xiàn),桌面程序基本上只有微軟自己的程序能做到在高DPI下完美支持, 其他大部分程序(即使如Chrome)也是通過(guò)DWM虛擬化實(shí)現(xiàn)的高DPI支持。當(dāng)然現(xiàn)在WPF和Window store App基本上都是內(nèi)置支持高DPI的。

統(tǒng)計(jì)下, 你們的程序支持高DPI嗎? 

                  High DPI Settings in Windows
posted on 2014-02-18 23:12 Richard Wei 閱讀(42025) 評(píng)論(10)  編輯 收藏 引用 所屬分類: windows desktop

FeedBack:
# re: 關(guān)于Windows高DPI的一些簡(jiǎn)單總結(jié)
2014-03-03 09:22 | Won
Vista/Win7 125%與150%的處理方式,應(yīng)該是XP與Vista模式的差別吧  回復(fù)  更多評(píng)論
  
# re: 關(guān)于Windows高DPI的一些簡(jiǎn)單總結(jié)
2014-03-04 19:14 | Richard Wei
@Won
確實(shí),DWM虛擬化只有在大于125%時(shí)才會(huì)自動(dòng)開(kāi)啟  回復(fù)  更多評(píng)論
  
# re: 關(guān)于Windows高DPI的一些簡(jiǎn)單總結(jié)
2014-09-14 16:06 | Richard Wei
有人提到中文中夾雜英文的問(wèn)題,不多說(shuō)了,在外企呆過(guò)的同學(xué)應(yīng)該都會(huì)不自覺(jué)地有這個(gè)習(xí)慣,并且有時(shí)候錯(cuò)誤的中文還不如用原始的英文。  回復(fù)  更多評(píng)論
  
# re: 關(guān)于Windows高DPI的一些簡(jiǎn)單總結(jié)[未登錄](méi)
2014-10-12 02:09 | gyj
感謝樓主。  回復(fù)  更多評(píng)論
  
# re: 關(guān)于Windows高DPI的一些簡(jiǎn)單總結(jié)
2014-11-22 21:32 | 好文章
windows 8下一般只有微軟的應(yīng)用才完美支持hi-dpi的,“云團(tuán)隊(duì)”率先在windows下完美支持hi-dpi設(shè)置,效率高,效果超好,大家可以看看 http://www.17team.cn  回復(fù)  更多評(píng)論
  
# re: 關(guān)于Windows高DPI的一些簡(jiǎn)單總結(jié)
2014-12-16 09:35 | craft
效果的確不錯(cuò),動(dòng)畫(huà)很舒服。  回復(fù)  更多評(píng)論
  
# re: 關(guān)于Windows高DPI的一些簡(jiǎn)單總結(jié)
2015-01-01 23:56 | ibuick
Windows跟OSX比就是一垃圾貨  回復(fù)  更多評(píng)論
  
# re: 關(guān)于Windows高DPI的一些簡(jiǎn)單總結(jié)[未登錄](méi)
2015-01-12 15:36 | David
@ibuick
明明是軟件為了兼容XP用了老舊的庫(kù)導(dǎo)致對(duì)新系統(tǒng)兼容性爛。。  回復(fù)  更多評(píng)論
  
# re: 關(guān)于Windows高DPI的一些簡(jiǎn)單總結(jié)
2016-02-08 11:01 | Nukepayload2
看來(lái)還是WPF之類的Direct UI有前途,不用管Dpi的事情,總是非常清晰,比例也總是非常協(xié)調(diào)。  回復(fù)  更多評(píng)論
  
# re: 關(guān)于Windows高DPI的一些簡(jiǎn)單總結(jié)
2016-03-22 21:56 | xiabibi
然而擴(kuò)展顯示器也無(wú)法分別設(shè)置不同的縮放級(jí)別喝喝了  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美大片在线看| 中文日韩在线| 中文在线不卡| 亚洲一区二区三区色| 午夜精品国产更新| 久久精品国产一区二区三区免费看 | 日韩亚洲精品电影| 亚洲特级片在线| 亚洲欧美日韩直播| 久久久久一区二区| 亚洲国产婷婷香蕉久久久久久99| 久久九九热re6这里有精品| 一区二区亚洲精品国产| 99热这里只有精品8| 午夜精品久久99蜜桃的功能介绍| 久久精品官网| 亚洲日韩欧美视频| 欧美亚洲综合在线| 日韩一区二区精品| 久久精品av麻豆的观看方式| 欧美精品在线免费观看| 国产日韩亚洲| 亚洲视频福利| 免费在线日韩av| 亚洲午夜av在线| 欧美激情一区二区三区全黄 | 亚洲人成在线免费观看| 亚洲欧美另类久久久精品2019| 久久综合久久综合久久| 久久久噜噜噜久噜久久| 久久精品二区亚洲w码| 狂野欧美性猛交xxxx巴西| 欧美日在线观看| 亚洲高清色综合| 久久爱www| 亚洲剧情一区二区| 久久综合中文| 国产午夜精品美女毛片视频| 亚洲色无码播放| 欧美激情亚洲视频| 久久高清免费观看| 国产精品红桃| 99在线视频精品| 欧美大片免费久久精品三p| 性8sex亚洲区入口| 国产精品美女久久久久aⅴ国产馆| 亚洲精选成人| 亚洲第一视频| 免费看黄裸体一级大秀欧美| 韩日精品在线| 久久久精品2019中文字幕神马| 正在播放欧美视频| 欧美午夜不卡影院在线观看完整版免费| 久久精品一本| 国产视频一区在线| 欧美在线观看视频一区二区三区| 一区二区三区色| 欧美先锋影音| 性做久久久久久久免费看| 999在线观看精品免费不卡网站| 免费在线视频一区| 亚洲精品资源美女情侣酒店| 亚洲欧洲日本mm| 欧美理论视频| 亚洲一区自拍| 亚洲尤物在线视频观看| 国产精品每日更新在线播放网址| 亚洲欧美日韩国产另类专区| 亚洲午夜羞羞片| 国产亚洲a∨片在线观看| 久久久精品国产免费观看同学| 久久成人18免费网站| 在线成人激情视频| 亚洲国产精品热久久| 欧美日韩亚洲高清| 欧美一二三区精品| 久久国产免费| 国内精品久久久久久久果冻传媒 | 亚洲国产精品久久人人爱蜜臀 | 久久精品日韩欧美| 国产欧美一区二区三区在线老狼 | 久久久www成人免费无遮挡大片| 久久久久久亚洲精品不卡4k岛国| 欧美有码视频| 国模私拍视频一区| 蜜臀久久99精品久久久画质超高清| 亚洲图片在线观看| 99精品视频免费观看| 欧美四级剧情无删版影片| 午夜在线观看免费一区| 久久国产精品毛片| 亚洲美女免费精品视频在线观看| 亚洲破处大片| 国产精品高潮呻吟久久av无限| 在线亚洲观看| 性欧美video另类hd性玩具| 亚洲高清在线观看一区| 夜夜夜久久久| 雨宫琴音一区二区在线| 99精品热6080yy久久| 精品动漫av| 亚洲视频在线观看网站| 亚洲电影免费观看高清完整版在线 | 制服丝袜亚洲播放| 亚洲欧美日韩国产成人精品影院| 亚洲第一页在线| 亚洲少妇在线| 亚洲精品在线电影| 欧美一级午夜免费电影| 99精品国产热久久91蜜凸| 亚洲午夜女主播在线直播| 136国产福利精品导航网址| 亚洲午夜三级在线| 亚洲精品麻豆| 午夜亚洲福利| 在线综合亚洲| 欧美精品久久久久久久久久| 久久精品天堂| 久久激情五月丁香伊人| 一本久久青青| 免费美女久久99| 欧美专区在线| 午夜精品偷拍| 欧美午夜视频一区二区| 最新国产成人av网站网址麻豆| 永久域名在线精品| 欧美在线网站| 久久久久久久网站| 国产日韩一区二区三区在线播放| 在线综合视频| 亚洲欧美区自拍先锋| 欧美日韩在线播放一区| 亚洲免费高清| 亚洲一区二区在线看| 欧美新色视频| 亚洲一区二区少妇| 欧美淫片网站| 国产资源精品在线观看| 欧美一区二区三区免费视频| 欧美在线看片| 韩国精品在线观看| 久久黄色影院| 欧美成人精品高清在线播放| 亚洲成色777777女色窝| 亚洲一区精品电影| 国产精品成人观看视频免费 | 欧美二区不卡| 亚洲国产小视频| 麻豆精品一区二区综合av| 欧美夫妇交换俱乐部在线观看| 亚洲国产欧美日韩精品| 欧美大色视频| 一本色道久久综合亚洲精品高清| 亚洲欧美日韩一区二区| 国产免费成人av| 欧美在线影院| 麻豆精品一区二区av白丝在线| 亚洲国产欧美另类丝袜| 欧美成人r级一区二区三区| 亚洲精品少妇30p| 亚洲一区二区三区中文字幕| 欧美午夜性色大片在线观看| 亚洲欧美日本日韩| 久久伊人免费视频| 亚洲欧洲一区二区三区在线观看| 欧美久久久久免费| 亚洲自拍高清| 欧美二区在线| 亚洲视频碰碰| 国产偷国产偷亚洲高清97cao| 乱人伦精品视频在线观看| 日韩亚洲国产精品| 久久久久久久久蜜桃| 亚洲国产精品欧美一二99| 欧美三级在线视频| 国产精品99久久不卡二区| 久久一区精品| 午夜精品短视频| 亚洲精品一区二区三区婷婷月| 国产裸体写真av一区二区| 欧美成人精品福利| 欧美亚洲一区二区在线| 亚洲国产婷婷香蕉久久久久久99 | 久久久久久夜| 亚洲免费在线看| 亚洲欧洲综合| 欧美va亚洲va日韩∨a综合色| 午夜免费电影一区在线观看| 亚洲级视频在线观看免费1级| 国产欧美一区二区精品性| 欧美精品一区二区蜜臀亚洲| 久久久精品网| 先锋影音国产一区| 亚洲神马久久| 亚洲精品视频中文字幕| 欧美成人在线影院| 久热精品视频| 久久尤物视频| 久久九九精品| 久久久久国产精品午夜一区|