【问题标题】:Handling fonts in Windows 8在 Windows 8 中处理字体
【发布时间】:2013-11-27 06:57:29
【问题描述】:

我在想,如果微软为平板电脑和 PC 开发了一个操作系统 - Windows 8。那么就必须有一种方法来控制 FontSize。示例我有一个 4 列的主网格:

<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>

在小型设备上看起来像这样:

在像这样的更大设备上:

不可读!

我已经尝试过 ViewBox 解决方案,但是

由于字符数,相同的 FontSizes 现在具有不同的大小

例子:

然后我尝试将所有页面放在 ViewBox 中:

这也不好,因为它破坏了我所有的星星大小的网格。

所以问题是:

1) 当我更改 FontSize 时,有没有办法计算 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) 有没有一种方法可以让 ViewBoxes 当前的拉伸系数降低,这样我就可以用最少的方法找到并应用到其他人身上?

3) FontStretch= 属性有什么作用? - 我看不出有什么区别?

4) 任何其他处理字体大小的方法?

【问题讨论】:

    标签: c# wpf xaml windows-8 windows-8.1


    【解决方案1】:

    您的前两个结论(“在小型设备上看起来像这样:”、“在像这样的大型设备上:”)是错误的。文本大小对您来说只是看起来不同,因为您的模拟器已缩放。 (看看两个屏幕截图的宽度如何)

    文本在现实世界的设备上将具有相同的大小(如果以英寸为单位)。

    如果您想拥有相同的屏幕尺寸(以屏幕面积的百分比衡量),那么您可能希望将整个页面包装在一个 Viewbox 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多