Using a System.Drawing.Font with a WPF Label

廉价感情. 提交于 2020-01-03 10:58:07

问题


I have a WPF Label control which I'm trying to change the appearance of using a System.Drawing.Font object supplied by some legacy code. I have been able to set most of the properties, but am struggling with Strikeout and Underline.

So far I have:

System.Drawing.Font font = FontFromLegacyCode();

System.Windows.Controls.Label label = new System.Windows.Controls.Label();
label.FontFamily = new System.Windows.Media.FontFamily( font.Name );
label.FontWeight = font.Bold ? System.Windows.FontWeights.Bold : System.Windows.FontWeights.Regular;
label.FontStyle = font.Italic ? System.Windows.FontStyles.Italic : System.Windows.FontStyles.Normal;
label.FontSize = font.Size;

How do you set the font strikeout or underline properties? Is there a better control to use?


回答1:


I would change it to a TextBlock control. The TextBlock control has the TextDecorations property you can use.

<TextBlock Name="textBlock" TextDecorations="Underline, Strikethrough" />

Or you can stick a TextBlock inside a Label if you really like (although I'd just use the TextBlock by itself).

<Label Name="label">
    <TextBlock Name="textBlock" TextDecorations="Underline, Strikethrough" />
</Label>

Have a look at the TextDecorations class.

I find that TextBlocks are more suitable than Labels in most situations. Here's a blog post about the differences. The chief difference being that a Label is a Control whereas a TextBlock is just a FrameworkElement. Also a Label supports access keys.




回答2:


Looking at the code you already have, there might be a problem with it. On the MSDN on Windows Form and WPF Property mapping they make the comment:

Font size in WPF is expressed as one ninety-sixth of an inch, and in Windows Forms as one seventy-second of an inch. The corresponding conversion is:

Windows Forms font size = WPF font size * 72.0 / 96.0.



来源:https://stackoverflow.com/questions/637636/using-a-system-drawing-font-with-a-wpf-label

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!