px:相對長度單位。畫素(pixel)。pt:絕對長度單位。點(point)。
1in = 2.54cm = 25.4 mm = 72pt = 6pc
具體換算是:
points pixels ems percent
6pt 8px 0.5em 50%
7pt 9px 0.55em 55%
7.5pt 10px 0.625em 62.5%
8pt 11px 0.7em 70%
9pt 12px 0.75em 75%
10pt 13px 0.8em 80%
10.5pt 14px 0.875em 87.5%
11pt 15px 0.95em 95%
12pt 16px 1em 100%
13pt 17px 1.05em 105%
13.5pt 18px 1.125em 112.5%
14pt 19px 1.2em 120%
14.5pt 20px 1.25em 125%
15pt 21px 1.3em 130%
16pt 22px 1.4em 140%
17pt 23px 1.45em 145%
18pt 24px 1.5em 150%
20pt 26px 1.6em 160%
22pt 29px 1.8em 180%
24pt 32px 2em 200%
26pt 35px 2.2em 220%
27pt 36px 2.25em 225%
28pt 37px 2.3em 230%
29pt 38px 2.35em 235%
30pt 40px 2.45em 245%
32pt 42px 2.55em 255%
34pt 45px 2.75em 275%
36pt 48px 3em 300%
畫素與公釐的轉換
轉換還需要知道另乙個引數:dpi(每英吋多少點)
象素數 / dpi = 英吋數
英吋數 * 25.4 = 公釐數
對於顯示裝置,不管是印表機還是螢幕,都有一種通用的方法
先用getdevicecaps(裝置控制代碼,logpixelsx)
或者 getdevicecaps(裝置控制代碼,logpixelsy)獲得裝置每英吋的畫素數
分別記為:px 和 py
一英吋等於25.4mm
那麼公釐換算成畫素的公式為
水平方向的換算: x * px /25.4
垂直方向的換算: y * py /25.4
畫素換算為公釐 x * 25.4 / px
在程式中這麼寫
mycontrol.height := 10 * pixelsperinch * 10 div 254;
分子和分母同乘以10,將浮點數運算轉化為整數運算,效率更高
常用的1024x768或800x600等標準的解析度計算出來的dpi是乙個常數:96,因此計算出來的公釐與畫素的關係也約等於乙個常數:
基本上 1公釐 約等於 3.78畫素
字型大小的設定單位,常用的有2種:px、pt。這兩個有什麼區別呢?
先搞清基本概念:px就是表示pixel,畫素,是螢幕上顯示資料的最基本的點;
pt就是point,是印刷行業常用單位,等於1/72英吋。
這樣很明白,px是乙個點,它不是自然界的長度單位,誰能說出乙個「點」有多長多大麼?可以畫的很小,也可以很大。如果點很小,那畫面就清晰,我們稱它為「解析度高」,反之,就是「解析度低」。所以,「點」的大小是會「變」的,也稱為「相對長度」。
pt全稱為point,但中文不叫「點」,查金山詞霸可以看到,確切的說法是乙個專用的印刷單位「磅」,大小為1/72英吋。所以它是乙個自然界標準的長度單位,也稱為「絕對長度」。
因此就有這樣的說法,pixel是相對大小,而point是絕對大小。
分清「螢幕效果」和「列印效果」:
在瀏覽網頁過程中,所有的「大」「小」概念,都是基於「螢幕」這個「介面」上。「螢幕」上的各種資訊,包括文字、、**等等,都會隨螢幕的解析度變化而變化,乙個100px寬度大小的,在800×600解析度下,要佔螢幕寬度的1/8,但在1024×768下,則只佔約1/10。所以如果在定義字型大小時,使用px作為單位,那一旦使用者改變顯示器解析度從800到1024,使用者實際看到的文字就要變「小」(自然長度單位),甚至會看不清,影響瀏覽。
那是不是用pt做單位就沒這樣的問題呢?錯!問題同樣出現。剛才的例子已經很清楚的說明,在不同解析度下,無論是px還是pt,都會改變大小。以現在的電腦螢幕情況,還沒有一種單位可以保證,在不同解析度下,乙個文字大小可以「固定不變」。因為這很難以實現也不是很有必要:全球電腦使用者以億來數,螢幕從14寸到40寸甚至更高都有,螢幕大小不同,解析度也不同,要保證乙個字型在所有使用者面前大小一樣,實在是mission impossible。另外,電腦有其自身的調節性。
那在頁面設計中到底是用px還是pt呢?
我認為,這個並沒有什麼原則性差異,就看自己處於什麼角度思考了。
mac機怎麼情況不清楚,在windows裡,預設的顯示設定中,把文字定義為96dpi(ppi,微軟都將dpi和ppi混為一體,我們也就無須較真了)。這樣的定義,說明了:1px=1/96英吋。聯絡pt的概念,1pt=1/72英吋,可以得出,在這樣的設定中,1px=0.75pt,常見的宋體9pt=12px。在顯示器解析度不變的基礎上(比如現在常用的1024×768),1px大小也就固定不變,改變顯示設定,調整為144dpi,可以得出,1px=0.5pt,常見的宋體9pt=18px。原先用12px來組成的乙個文字,現在需要18px來組成,px多了,文字就「大」了,更易閱讀了。
所以,px和pt的使用區別,只有當使用者改變預設的96dpi下才會產生:使用px定義文字,無論使用者怎麼設定,都不會改變大小;使用pt定義文字,當使用者設定超過96dpi的值,數值越大,字型就越大。
(附公式:px = pt * dpi / 72) 對了,剛才還提到改變瀏覽器中文字大小的選項,也可以改變網頁的文字大小。但在這種情況下,使用px和pt都是無效的,因為這2個都是有實際「pixel」數值的單位,比如9pt是12px,大小固定。這裡要引用新的單位:em,其實就是%。因為當網頁中的字型沒有給出實際的px或pt定義的話,會有乙個預設值:12pt即16px,對應瀏覽器中「字型大小」中的「中等」,以這個為標準,變大或縮小。(只適用於ie,在ff中,即便定義px或pt也都可以變大變小)
所以,從這個概念上看,em才是真正的「相對單位」(百分比嘛,當然是相對),而px和pt都是絕對單位(都有固定值)。
在網頁設計中,面向使用者的螢幕的基本單位是px,因此使用px作為單位是最簡單也最容易理解的,而pt也不過是通過了windows的設定乘上了乙個比率轉變成px再顯示,算是繞了個圈子。參考大部分大型**,包括adobe和microsoft,都是使用px作為單位,而且在html中,預設的單位就是px,是不是也暗示著px是網頁設計的「內定單位」?
但在word或photoshop中,使用pt就相當方便。因為使用word和photoshop的主要目的都不是為了螢幕瀏覽,而是輸出列印。當列印到實體時,pt作為乙個自然長度單位就方便實用了:比如word中普通的文件都用「宋體 9pt」,標題用「黑體 16pt」等等,無論電腦怎麼設定,列印出來永遠就是這麼大。又或者在photoshop中,設定乙個中的某個藝術效果的字型是72pt大小,然後分別將這張設為300dpi和72dpi,再列印出來,就可以看出,這2個字型大小完全一樣,只是「清晰度」不同,300dpi更清晰。這是毫無疑問的結果。
px:pixel,畫素,螢幕上顯示的最小單位,用於網頁設計,直觀方便;
pt:point,是乙個標準的長度單位,1pt=1/72英吋,用於印刷業,非常簡單易用;
em:即%,在css中,1em=100%,是乙個比率,結合css繼承關係使用,具有靈活性。
ppi(dpi):pixel(dot)per inch,每英吋的畫素(點)數,是乙個率,表示了「清晰度」,「精度」
px和pt轉換的公式:
以前在文章中介紹過px和pt的轉換規則,其實很簡單,pt=px乘以3/4。
比如12px×3/4=9pt大小。
px和em轉換的公式:
對於px轉em的方法也類似,就是em=16乘以px,也就是說1.5em=1.5×16=24px。
ui字型 pt 和 前端字型 px 之間的轉化
在我們開發過程中ui給我們標註的字型通常是用px或者pt標記的,但是oc提供的size的單位值是pt,這往往給我們在計算字型的時候造成一些困擾,許多新手更甚直接用px或者ps去設定字型的大小造成介面的顯示效果與ui圖不符合。1 字型大小的設定單位,常用的有兩種 px 和 pt 這兩個有什麼區別?px...
px轉pt的正確演算法
首先,pt是乙個物理常量,是現實世界的度量單位,有確定的數值,1pt 1 72英呎。而畫素是乙個變數,基於顯示裝置的引數不同,乙個畫素的大小也不盡相同。而畫素大小的計算方式就是dpi dots per inch 當然,在現在這個討論的情景下,其實dpi就是ppi pixels per inch 一般...
px和pt的區別
這是乙個遠古的問題,貌似很弱的問題,卻被無數人混淆的問題。或許,這問題提出來,本身就是問題。先搞清基本概念 px就是表示pixel,畫素,是螢幕上顯示資料的最基本的點 而pt就是point,是印刷行業常用單位,等於1 72英吋。這樣很明白,px是乙個點,它不是自然界的長度單位,誰能說出乙個 點 有多...