我可以找到的所有文檔以及我做的每一個搜索都會不斷斷言,在Silverlight中,當您將FontHeight設置爲像素高度時,同樣對於LineHeight,在例如。一個TextBlock。但在實踐中,這根本不是真的:當我使用普通字體(如Lucida Sans Unicode)將字體高度(和行高度)設置爲22時,行之間的實際高度爲33像素。 (實際上,33和一小部分。)爲什麼Silverlight聲稱字體高度是以像素爲單位的,當它不是?
爲了解決這個問題,我試着做我在Java applets中做過的事情:使用字體指標來詢問我的文本實際上有多高。我發現的唯一方法是將示例文本渲染到屏幕外的TextBlock中,對其進行測量並查看它有多高。它返回了一個非常方便的答案:32像素。
請注意,這幾乎是正確的。屏幕上的TextBlock將字體渲染爲33像素高,而屏幕外渲染的像素高32像素。測量我的文本的唯一方法是將屏幕上的「屏幕外」塊準確地顯示出來,透明並且在屏幕上顯示。然後測量返回33.
我在這裏錯過了什麼?爲什麼大家都說高度是以像素爲單位的,但是我發現這裏的數字代表以像素半爲單位測量的實際高度,而且確切比例取決於控件是否是活動頁面的一部分或者是分離和自給自足?我不瞭解什麼?
添加註釋:我意識到一行文本佔用的高度與實際字形高度之間的差異。但是同樣的說明字體高度的文檔也是以像素爲單位的,也就是說行高是以像素爲單位的,並且默認與字體高度相同。這顯然意味着字體高度應該包括所有使用的垂直空間,而不僅僅是字形高度。
最後一點:我想我到底問題是,我一直運行到誤傳有關Silverlight,然後忘了,我讀它,所以我把它夾雜了準確的信息。就像,我在哪裏看到畫布延伸以保持其內容?它沒有。
字體是在印刷點測量的網格。沒有人會說像素。 – vorrtex
以下各頁均以「像素」表示: http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.fontsize%28v=VS.95%29.aspx http://msdn.microsoft.com/en-us/library/cc189010%28vs.95%29.aspx –