最近在跟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 }
Link
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
請教各位高手幾個有關像素和解析度的問題
知識百科:中文字號、磅和像素對照關係