调整对话框字体大小 - 使用GetStockObject(SYSTEM_FONT)

时间:2015-11-23 00:26:37

标签: c# wpf fonts

我是WPF新手的经验丰富的开发人员。我很欣赏WPF组件的所有灵活性,但这种灵活性让我有点麻烦。

具体来说,我想创建一个对话框。当我在C ++ / MFC或C#/ Win Forms中执行此操作时,我的文本框和文本框字体自动适合系统对话框。

但是在WPF中,我必须对文本框高度的字体大小进行硬编码。这显然意味着:

  1. 我必须猜测哪种字体大小最符合用户对话框的系统字体设置,而且我的字体不会适应每个用户'系统设置。

  2. 更糟糕的是,我还要猜测当前字体的最佳文本框大小。这在其他平台上一直是自动的。

  3. 我只是想知道经验丰富的WPF开发人员如何处理对话框中的文本框和字体大小。

    修改

    换句话说,我希望我的文本框能够使用Windows API调用GetStockObject(SYSTEM_FONT)返回的字体。这是WPF直接支持吗?

2 个答案:

答案 0 :(得分:1)

您可以将控件的大小设置为“自动”,如下所示:<TextBlock Heigh="Auto" Text="Foobar"/>,控件的高度将适应内容。 这也适用于任何控件上的任何高度或宽度属性。 希望我帮忙;)

答案 1 :(得分:1)

我很难理解您的问题,主要是因为WPF比MFC或Winforms更适合 用于您似乎要问的场景。

  
      
  1. 我必须猜测哪种字体大小最符合用户对话框的系统字体设置,而且我的字体不会适应每个用户&#39;系统设置。
  2.   

WPF使用与设备无关的指标。特别是,WPF像素总是每标称英寸96。当然,根据用户设置,WPF的实际大小&#34;英寸&#34;可能多于或少于一英寸。但这些是用户控制下的设置,专门用于进行此类缩放。

WPF模型的一大优势在于,与Winforms不同,无论缩放如何,所有内容的相对布局都保持不变。在Winforms中,不同的东西会有不同的缩放,导致换行发生在不同的地方,文本被截断等等。

  
      
  1. 更糟糕的是,我还要猜测当前字体的最佳文本框大小。这在其他平台上一直是自动的。
  2.   

WPF Window类具有SizeToContent属性。如果将其设置为Both,则窗口将自行调整大小以准确包含您放入其中的任何内容。这不是你想要的吗?


如果以上内容无法解决您的具体情况,请通过提供a good, minimal, complete code example来帮助我们了解您的情况,How to change the Content of a <textarea> with Javascript可以清楚地显示您遇到的问题,并准确说明代码的作用以及与代码的不同之处你想要什么。