2013-11-14 26 views
1

我在想如果微軟爲平板電腦和個人電腦製作了一個操作系統--Windows 8,那麼就必須有一種方法來控制FontSize。例如我有4列的主網格:在Windows 8中處理字體

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <Grid> 
     <TextBlock FontSize="20" Text="First Title"/> 
    </Grid> 
    <Grid Grid.Column="1"> 
     <TextBlock Text="Second Longer In Characters Title" FontSize="20"/> 
    </Grid> 
</Grid> 

在小型裝置,它看起來像這樣:

enter image description here

在更大的設備是這樣的:

enter image description here

它不可讀!

我已經試過了視框的解決方案,但

同樣FontSizes現在有不同的大小,因爲字符數

例子:

enter image description here

然後我試圖把所有的頁面中視框:

enter image description here

它也不好,因爲它毀了我所有的星形網格。

所以問題是:

1)有沒有一種方法來計算TextBlock的寬度,當我改變字號? 所以我可以這樣做:

foreach (TextBlock on a page) 
{ 
    //Find the textblock with biggest amount of characters 
} 
do 
{ 
    FoundTextBlock.FontSize=FontSize+1; 
} 
while (FoundTextBlock.WidthInPixel fits 200px) 
foreach (TextBlock on a page) 
{ 
    //Set all text blocks the same FontSize 
} 

2)是否有得到拉伸koeficient ViewBoxes電流的方式,所以我可以用最少的發現和應用給別人?

3)FontStretch = property做什麼? - 我看不出有什麼不同?

4)任何其他方式來處理字體大小?

回答

1

您的前兩個結論(「在小設備上它看起來像這樣:」,「在更大的設備上是這樣的:」)是錯誤的。由於您的模擬器已縮放,所以文本大小隻與您的看法不同。 (查看兩張截圖的寬度都相同)

在真實世界的設備上,文本大小相同(如果以英寸爲單位進行測量)。

如果您希望具有相同的屏幕大小(以屏幕區域的百分比衡量),那麼您可能希望將整個頁面包裝在一個Viewbox中。