如何在WPF中使用字体缩放表单?
即。什么是WPF相当于
this.Font = SystemFonts.IconTitleFont;
在WinForms中,如果您是一名优秀的开发人员,则表示您尊重用户的字体首选项。一个WinForm,起始于:
然后应用用户的字体首选项:
this.Font = new Font("Segoe Print", 11, GraphicsUnit.Point);
以及 比例 表单上的元素以适应新尺寸:
注意:
注意:在WinForms中,您还可以使用以下行:
this.Font = SystemFonts.IconTitleFont;
WPF不支持
Font
,这就是为什么我提供了更清晰的选择。对于下面的示例。
类似的WPF表单开头为:
然后将用户的字体首选项应用于:
this.FontFamily = new FontFamily("Segoe Print");
this.FontSize = 14.666; //11pt = 14.66
并且表单上的元素不会缩放以适应新的大小:
注意:
以下是相同尺寸的两个按钮的另一个示例:
的WinForms:
Windows Presentation Foundation:
答案 0 :(得分:11)
WPF不进行原始的基于字体的缩放,因为它是......好吧,原始的。您可以在自己的屏幕截图中看到它。
这是你的“WinForms,在更改字体之前”截图。看看“坐在日志上”之间有多少空间。和表格的右边缘。
这是你的“WinForms,更改字体后”截图。注意“缩放”后你有多少余量。
如果您没有留下所有额外空间,那么您的标签将被新字体切断。对于某些字体,即使你 留下所有额外的空间,它也会被切断。当我说WinForms的缩放是“原始的”时,这就是我的意思。 WinForms选择一个单一的比例来应用于所有内容,并且在不了解您的内容的情况下不选择该比例;它基于字体的平均值统计信息,一旦你开始讨论细节,它就会崩溃。
WPF并没有用原始的东西来阻碍你。它为您提供了一个非常强大的布局系统,在这里制作一个可以精美缩放的窗口是微不足道的。但相反,您选择使用硬编码尺寸来削弱布局系统。 停止。
硬编码大小有两个大问题:
的硬编码大小不适应。 任何东西。你必须在WinForms中使用它们,因为这是所有WinForms支持的。但WPF为您提供了一个合适的布局系统,因此您不必(也不应该)使用任何原始布局系统。
所有你需要的是:
Window
SizeToContent="WidthAndHeight"
。这样,无论您使用何种字体或语言,窗口都将具有恰当的大小以容纳文本和按钮。StackPanel
中添加Window
。StackPanel
内,您需要:
Label
或TextBlock
显示您的文字,文字位于Content
(Label
)或Text
(TextBlock
);和Button
HorizontalAlignment="Right"
和Content
中的文字。Margin
,StackPanel
和TextBlock
上设置一些Button
,以便根据自己的喜好设置内容。就是这样。不要在任何内容上设置任何其他属性 - 尤其是而不是Width
或Height
。
现在,如果您更改字体,窗口和按钮仍将是完全正确的大小,并且不会切断您的文本。如果您将应用程序本地化为其他语言,则窗口和按钮的大小将完全合适,并且不会切断文本。停止战斗WPF,它会给你很好的结果。
如果您以后想要使布局更高级,可以考虑以下内容:
Padding
,或设置MinWidth
和MinHeight
。 (如果您的按钮包含文本,请不要使用Width
或Height
。如果您的按钮只包含图片,可能会考虑使用它们,但即便如此也是如此。)< / LI>
MaxWidth
和TextWrapping
WPF的布局系统非常强大。学习它。不要使用硬编码布局来对抗它,然后抱怨你的硬编码布局很糟糕。