C DPI適配問題

2021-08-28 08:02:39 字數 1326 閱讀 8954

什麼是dpi?

全稱是dots per inch (dpi), 也就是每英吋的點數,在顯示器上就是每英吋的畫素個數,window上一般預設是96 dpi 作為100% 的縮放比率, 但是要注意的是該值未必是真正的顯示器物理值, 只是windows裡我們的乙個參考標準。

當我們不想要我們的介面隨著dpi的改變而改變的時候,可以讓windows忽略我們的程式,**如下:

// 在執行整個程式要開啟的第乙個winform的初始化裡面,執行這個方法就可以了

public static int ignoredpi()

[dllimport("user32.dll")]

public static extern intptr getdc(intptr ptr);

[dllimport("user32.dll", entrypoint = "releasedc")]

public static extern intptr releasedc(intptr hwnd, intptr hdc);

[dllimport("gdi32.dll")]

public static extern int getdevicecaps(

intptr hdc, // handle to dc

int nindex // index of capability

);[dllimport("user32.dll")]

internal static extern bool setprocessdpiaware();

const int logpixelsx = 88;

const int logpixelsy = 90;

這個時候,有些控制項裡面的文字顯示的不對,是因為字型大小設定的問題

下面我們思考為什麼dpi設定高了之後, 我們看到的字型會變大? 因為系統字型是是以固定大小(宋體10號字,物理尺寸為(10/72)英吋)設計的, 當我們dpi設定高了之後 ,說明該字型要占有更多的畫素, 在螢幕解析度不變的前提下, 看起來也就大了。所以如果我們設定高dpi,通常也意味著我們的顯示器是高解析度, 裡面的字型看起來太小了, 我們需要提高dpi來把內容放大。

如果我們用的是系統字型(如getstockobject(default_gui_font)), 那麼這種情況下我們不用操心, 因為系統會對該字型在高dpi時進行相應的放大; 如果我們是用createfont自己建立的字型, 那就要我們自己對該字型進行放大了。

總結:如果不想麻煩,可以直接使用windows系統字型,如 (微軟雅黑, 12pt /微軟雅黑, 10.5pt 等)

Android values適配問題

第一次寫部落格,有點期待呢!菜鳥乙個,看到網上大神們寫的利用values問價夾寫的適配,本人就採用了他們的檔案生成了不同解析度的資料夾,大致的解析度都寫上了,但是在適配華為的時候不知道為什麼適配不了,經過測試那些手機走的並不是對應上面我寫的這些資料夾。不知道為什麼。但是我在values資料夾後面加上...

iponeX適配問題

安全區域指的是乙個可視視窗範圍,處於安全區域的內容不受圓角 corners 齊劉海 sensor housing 小黑條 home indicator 影響,如下圖藍色區域 網頁預設不新增擴充套件的表現是 viewport fit contain,需要適配 iphonex 必須設定 viewport...

螢幕適配問題

在smllestwidth方案中 需要在dimens.xml寫入dp值 即將對應的px轉換為dp 那麼這個dp值是如何計算出來的呢?首先我們需要直到螢幕的密度density 可根據 density dpi 160 獲得 dpi是每英吋畫素 然後我們就可以根據密度 density 畫素 px 計算出對...