【问题标题】:Set WPF Font size based on screen size根据屏幕大小设置 WPF 字体大小
【发布时间】:2011-04-07 10:45:08
【问题描述】:

我想要一个基于用户屏幕分辨率的默认字体大小。 即,如果屏幕工作区宽度小于 1024,则使用字体大小 10,否则使用字体大小 14。 我目前使用“SystemParameters.WorkArea.Width”来确定宽度

我可以设置全局字体大小并有一个转换器来返回字体大小,但我真的很难弄清楚如何让它触发。 IE。当窗口大小改变时,让它检查字体大小应该是什么

<Window.Resources>

    <local:SetFontSize x:Key="myConverter" />

    <Style TargetType="{x:Type Control}" x:Key="baseStyle">
        <Setter Property="FontSize" Value="14"  />
        <Setter Property="FontFamily" Value="Calibri" />           

</Window.Resources>

我找到了以下事件,但似乎无法将两者联系在一起(尽管我可能会走错路)

<Window.Triggers>
    <EventTrigger RoutedEvent="SizeChanged">          
    </EventTrigger>
</Window.Triggers>

【问题讨论】:

    标签: .net wpf styles


    【解决方案1】:

    你为什么想要这个? Wpf 使用抽象坐标,并使用当前监视器 DPI 和分辨率将它们转换为像素。因此,您的应用程序应该自动缩放以在每个屏幕上看起来都相似。 我建议使用可拉伸的布局、滚动条等。以使您的应用能够在较小的屏幕上使用。

    【讨论】:

    • 谢谢大家,我很欣赏你们俩所说的话,并将重新考虑我的方法。我仍然发现,无论 DPI 设置如何,文本大小在 800 x 600 和 1920 x 1200 之间存在巨大差异,例如。我可以制作一个文本框拉伸,但不能制作相应的标签“字体拉伸”,这会使事情看起来很奇怪。
    【解决方案2】:

    请记住,WPF 应用程序是“DPI 感知”的,字体大小不是以像素为单位的 - 因此,如果用户使用不同的 DPI 设置来增加字体大小,它将自动反映在您的 WPF 应用程序中。希望用户可以按他们应该的方式使用 DPI 设置吗?

    (如果其他应用使用 10 号字体并且它太小了,与其重写该应用,他们可能会调整其 DPI - 如果没有其他应用使用 10 号字体,它可能对所有用户来说都太小了)

    我知道这不是一个答案,但是牺牲设计并不得不为不会调整 DPI 设置的人修改东西是一种耻辱?我是不是太消极了? :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      相关资源
      最近更新 更多