是否适合使用“ Wingdings” Windows窗体或WPF应用程序中的字体?
-
05-07-2019 - |
题
我有一个WPF控件,它有一个“投资者”列表,在列表的右栏中有一个“删除”列表。按钮。
我可以浪费一些时间来制作“x”的图像。在photoshop中。或者,我可以使用Wingdings字体并将内容设置为“Õ” (这看起来很酷的删除按钮)。
这是否合适?我的想法是......虽然不是每台计算机上都有每个字体系列,但我很确定如果你运行我的WPF Windows窗体程序就可以安全地使用Wingdings。
你怎么看?请尽量提供有关此事的统计数据(不仅仅是感受)。我应该担心字体大小吗?等解决方案
老实说,如果你正在使用WPF,那么使用一个路径制作'x'形状可能同样容易:
<Style x:Key="DeleteButtonStyle" TargetType="{x:Type Button}">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<Path Name="Circle" Data="F1 M 0 7.5 A 7.5 7.5 0 1 1 15 7.5 A 7.5 7.5 0 1 1 0 7.5"/>
<Path Fill="White" Data="F1 M 7.5 6 L 10.5,3 12,4.5 9,7.5 12,10.5 10.5,12 7.5,9 4.5,12 3,10.5 6,7.5 3,4.5 4.5,3 Z"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Fill" TargetName="Circle" Value="SlateGray"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Fill" TargetName="Circle" Value="DarkGray"/>
</Trigger>
<DataTrigger Binding="{Binding}" Value="{x:Null}">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ToolTip" Value="Delete This Item"/>
</Style>
只需将此样式应用于按钮,即可立即获得“删除”按钮。按钮!
其他提示
假设您可以显示Unicode,那么您可以尝试使用许多字体中的大量字形。
例如,这是(可能)Arial中的unicode字符:&#10006;
我从 http://www1.tip.nl/~t876506获取了角色参考/UnicodeDisplay.html 但我确信有比这更好的地方
很抱歉,但我无法想到任何使应用程序看起来比使用控制字符的控件更加业余的东西。
我认为你应该没问题,特别是对于WPF。我不知道Wingdings字体是否特别适用于每台Windows机器(可能是的),但我知道Marlett字体中的字符用于Win XP UI。
我认为很好的解决方案是从Wingdings中获取您喜欢的字形,并将它们转换为WPF形状,作为您应用的资源。这将为您的应用添加几个kB,您将不会依赖Wingdings。
大多数问题是忘记添加字节大小。
在C#(Winform)中我使用:
static Font wingdings2 = new Font("Wingdings 2", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(2)));
所以我可以:
myTextBoxt.Font = wingdings2;
不隶属于 StackOverflow