Windows phone 7 裡silverlight的點與畫素 (Points and Pixels in silverlight)

l_serein發表於2012-12-16
Silverlight 中的所有尺寸都是以畫素為單位,FontSize也不例外。

當你定義FontSize = "36"時,意味著你得到了一個字型,這個字型從字母上沿到字母下沿的尺寸是36個畫素。

傳統上,字型尺寸是以點(Points)為單位的。在經典的凸版印刷中,一個點非常接近於1/72英寸,但是在數位印刷中,點經常被假定成確定的1/72英寸。

一個大小為72點的字型從字元頂端至底端大約是1英寸。

如何在畫素和點之間轉換?顯然你不能將特殊的輸出裝置除外。例如在一個每英寸600 dot(600DPI)的印表機上,72點的字型將會有600畫素高。

我們如今使用的桌面視訊輸出裝置的解析度通常在100DPI的範圍以內,例如,21寸顯示器可以顯示水平方向1600畫素,垂直方向1200畫素。

所以,斜對角線上是2000畫素,除以21,大約就是95DPI.

預設情況下,微軟windows假定視訊顯示裝置是96DPI, 在這個假設下,字型尺寸和畫素是有以下方程式中的關係的:

points = 3/4 * pixels

pixels = 4/3 * points

?這種關係僅適用於通常的視訊顯示裝置。

當你設定FontSize = "36"時,你也可以設定為27-point 的字型。但是在TextBlock裡實際上高度將更像48畫素。比FontSize大約高出33%,這些稱為leading的多餘的部分,防止

了多個文字行之間形成相互干擾。

當處理windows phone 7等裝置上的高解析度螢幕時,字型大小的問題變得更加複雜。480*800畫素螢幕,在大約4又2分之1寸螢幕上斜對角的畫素為933,密度大約200DPI,
大約是普通解析度的兩倍。

?當執行在Web瀏覽器裡時,預設的silverlight字型大小是11畫素,即8.25points, 對於桌面顯示來說很好了,但是對於手機來說就小了點。因此,windows phone的silverlight定義了

一個通用字型大小集合供使用。

標準的MainPage.xaml檔案在根元素下面包含了下面的屬性:

FontSize = "{StaticResource PhoneFontSizeNormal}"

這個FontSize會影響所有的TextBlock控制元件而不會設定他們自己的FontSize屬性。它是20個畫素,幾乎相當於預設桌面silverlight的FontSize的一倍。

使用標準的方程式,這個20畫素的FontSize對應於15points, 但是實際在手機上顯示時,大概只有列印文字的15points的一半大小。

TextBlock裡顯示的文字的實際高度大約比FontSize大33%,所以大概是27畫素。

相關文章