最近在跟UI Team合作時碰到一些問題,UI Team畫給我的UI圖中會明確標示元件的位置與要使用的字型,但是UI Team那邊在看的是Pixel,而我這邊看的是Point,當UI Team標明一個元件它裡面要顯示的是字型大小是14 Pixel時,我當下突然不知道該如何下手。看了一下相關的網路文章,大致才了解了其中的轉換,這邊簡單的將之整理紀錄一下。

因為每英吋有72個Point,且在Windows下預設是96 dpi,所以1 in = 72 pt = 96 ppi,故當我們要將Pixel轉換為Point時,可以透過下面公式來做轉換: point = pixel * 72 / 96

若要將point轉換為pixel,則可套用下面公式:

pixels = point * 96 / 72

若是在Mac的電腦上,預設是72 dpi,上面公式中的96就必須用72下去替換。當然這邊提到的DPI都只是預設狀態,若只是要抓個大概時可以直接拿來套用,但若要精準的轉換則還是要拿實際的解析度下去處理。

point = pixel * 72 / dpi pixel = point * dpi /72

實際用程式來做轉換時,可直接用Graphics.DpiX帶入去做運算。

using (var g = this.CreateGraphics()) { points = pixels * 72 / g.DpiX; pixels = points * g.DpiX / 72 }

Approximate Conversion from Points to Pixels

c# - Convert Pixels to Points - Stack Overflow

POINT TO PIXEL CONVERSION

Point vs Pixel. What is the difference?

About Points and Pixels as Units

HowtoCustomFontswithFontconfig

請教各位高手幾個有關像素和解析度的問題

知識百科:中文字號、磅和像素對照關係