缩放WPF用户界面以适应屏幕,而不会扭曲字体宽高比

时间:2013-09-13 01:23:20

标签: wpf viewbox scalable

我有一个WPF应用程序,它应该扩展它的UI以适应全屏 - 以不同的宽高比。我正在使用某些网格,但这不会缩放字体,而ViewBox会缩放TabControl,但会通过更改文本的宽高比来扭曲文本。

是否有人可以选择缩放控件的几何图形和文本的字体大小,但是对于字体保持相同的宽高比?

我一直在寻找一段时间,但似乎没有人回答这个问题。

这个问题似乎表明我可以从头开始写一些东西,但是我没有看到任何暗示我可以控制字体缩放: Making a Viewbox scale vertically but stretch horizontally

2 个答案:

答案 0 :(得分:1)

WPF确实有这种控制......它被称为Grid。大多数WPF开发人员设计应用程序,其中控件将自动增长以填充Window的大小,同时保持相同的字体大小宽高比。如果您想要在Window放大时将其特定部分放大,则使用ViewBox 该部分 ...而不是整个Window

答案 1 :(得分:0)

我自己的解决方案是原始的,但在某种程度上确实有效。

要定义控件几何体,请使用具有小数宽度/高度的网格,以及其他控件尺寸以适合其内容。

从窗口的实际高度除以其设计高度计算字体缩放比例。

将窗口级别的字体大小设置为设计大小*缩放。

问题:

  • 必须对原始设计高度进行硬编码,因为似乎没有任何方法可以从XAML中获取此信息
  • 必须硬编码原始设计的字体大小,同上。
  • 不会缩放填充或边距,因此比例仍然有点不稳定。
  • 如果您需要不同的字体大小,则必须为所有不同的控件编写代码。

WPF确实使这个难以实现的IMO:它具有可扩展的,与分辨率无关的元素,但实际上并不能帮助您构建可扩展的用户界面。