处理多屏幕尺寸的 Windows 8 Metro 应用程序字体大小

3

我有一个字体大小为14的文本。
在较小的屏幕上,它是可见的,但在较大的屏幕上变得更小。
我该怎么办呢?
在安卓系统上,我们有SP可以根据不同的屏幕调整字体大小。
在Windows 8中是否有类似的功能呢?


1
看看MSDN论坛上的这个帖子:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/659e1e95-9013-4644-a3a4-896335dec8ef - 如果确实是你想要的行为,ViewBox可能是你的答案。 - Jim O'Neil
3个回答

1

这将完全按照您的要求执行。

<Viewbox>
    <TextBlock>Hello World</TextBlock>
</Viewbox>

谢谢您的回答。如果您是微软的人,能否请您看一下这个问题:https://dev59.com/xGYq5IYBdhLWcg3woB4W - Inder Kumar Rathore

1

我猜你正在使用XAML?

那么,你应该从这里开始:

<Page.Resources>
    <x:Double x:Key="MyFontSize" />
    <Style TargetType="TextBlock" x:Name="StandardText">
        <Setter Property="FontSize" Value="{StaticResource MyFontSize}" />
    </Style>
</Page.Resources>

<TextBlock Style="{StaticResource StandardText}">Hello World</TextBlock>

然后在你的代码后台加入类似这样的内容:

Double _FontSize;
if (Windows.UI.ViewManagement.ApplicationView.Value
    == Windows.UI.ViewManagement.ApplicationViewState.FullScreenPortrait)
{
    // based on portrait
    if (this.RenderSize.Height > 2000)
        _FontSize = 30;
    if (this.RenderSize.Height > 1000)
        _FontSize = 20;
    else
        _FontSize = 10;
}
else
{
    // based on landscape
    if (this.RenderSize.Height > 1500)
        _FontSize = 30;
    if (this.RenderSize.Height > 1000)
        _FontSize = 20;
    else
        _FontSize = 10;
}
this.Resources["MyFontSize"] = _FontSize;

无论您在应用程序加载时检测到什么,除非用户更改监视器,否则始终会保留!

实际上,如果在多个显示器之间移动Metro (Store应用程序),屏幕大小将会改变。 - jr.
惊人!我昨天也得出了同样的结论。也许我在脑海中阅读了你的评论(类似于 StackOverflow)。 - Jerry Nixon

1

我正在研究这个问题。 我知道两件不同的事情。 一个是View Box,另一个是逻辑DPI。


我尝试在 XAML 中使用 ViewBox,但是它显示错误(我正在使用 C#)。 - Inder Kumar Rathore
你能分享一下你的代码吗? 我已经实现了ViewBox,它运行良好。 - user1714962
ViewBox在横向/填充/纵向视图方面运作良好,但在快照视图中不起作用。因此,如果您不打算在快照视图中显示任何内容,则此方法应该可以解决您的问题。 - user1714962

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接