delphi 設定win10 dpi 縮放規則

2021-10-02 06:26:28 字數 1877 閱讀 2676

一、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啟動跳轉列表,並選擇...