一、dpi介紹
dpi是「dots per inch」的縮寫,表示每英吋的畫素點個數,也就是畫素點的密集度。
dpi = 總畫素點 / 總面積
比如乙個32寸的顯示,但解析度只有1920*1440,而乙個24寸的顯示器,解析度卻達到3840*2160,很明顯後面這個顯示器的每英吋的畫素點的個數多,顯示的畫面更加細膩。
所以:高解析度不等於高dpi。
蘋果的視網膜螢幕的核心就是高dpi:螢幕面積小,卻解析度高達5k,每英吋的畫素點(dpi)固然多,畫面自然細膩。
二、高dpi顯示器如何導致軟體顯示異常
隨著2k、4k顯示器的普及,在使用這些高dpi顯示器時,為了保證系統軟體介面看起來不至於太小,導致視覺疲勞,一般會在系統中設定縮放比例。windows作業系統對高dpi顯示器縮放支援最好的是windows 10,建議使用高dpi顯示器時使用windows 10作業系統。
假設現在有乙個軟體介面(寬為950畫素,高為700畫素),該軟體在24寸、解析度為1900*1400的顯示器上顯示正常,但放到高dpi顯示器(同樣是24寸,但解析度為3800*2800)上顯示效果會如何?
從上圖可以看到,同樣尺寸的軟體介面,在高dpi顯示器上會顯得非常小,會造成嚴重的視覺疲勞。
所以我們的軟體需要針對高dpi進行縮放。
三、windows 10 dpi縮放規則
windows 10作業系統針對dpi縮放制定了3種規則,每個程序都必須匹配下面的一種規則,預設為process_dpi_unaware:
-------------delphi 設定
procedure tfrmbase.setdpisize;
var setprocessdpiawareness: pointer;
setting, windpi: integer;
begin
// set dpi awareness depending on a registry setting
with treginifile.create('software\' + sregname) do
begin
setting := readinteger('settings', 'scale', 0);
free;
end;
handle := loadlibrary('shcore.dll');
if handle <> 0 then
begin
setprocessdpiawareness := getprocaddress(handle, 'setprocessdpiawareness');
if assigned(setprocessdpiawareness) then
begin
if setting < 2 then
// setting <2 means no scaling vs windows
setprocessdpiawareness(0)
else
// setting 2: 120%, 3: 140% vs. windows
// the actual used scaling factor multiplies by windows dpi/96
setprocessdpiawareness(1);
end;
freelibrary(handle);
// get windows scaling as screen.pixelsperinch was read before swiching dpi awareness
// our scaling routines now work with windpi instead of screen.pixelsperinch
end;
end;
Win10 powershell字型設定
win10 自帶的console英文本型有點醜,想修改下?參考了這篇文章 什麼,powershell還有配置檔案?是的,有!每次執行powershell的時候會自動執行 profile 裡的 建立 new item path profile type file force檢視配置 新增如下 修改這裡...
win10預設語言設定
可以修改win10預設應用的語言,不只是中文,可以修改任何支援的語言。成功設定之後,應用商店會變成你想要的語言,適合英語不太好的人們。首先看 我的win10的應用商店是英文的 好了,開始設定 首先開啟控制面板 點選 時鐘,語言和區域 語言 不是網上說的日期和時間 可以看到有兩個語言選項,關鍵來了 滑...
設定win10的wifi熱點
1 使用快捷鍵win x啟動跳轉列表,並選擇命令提示符 管理員 2 在命令提示符對話方塊中輸入netsh wlan show drivers,然後按enter 回車 3 看看在螢幕上是否顯示 支援的承載網路 是 如果是這樣,請繼續看 10 否則看 4 9 4 使用快捷鍵win x啟動跳轉列表,並選擇...