【问题标题】:Is it appropriate to use "Wingdings" fonts in a Windows Forms or WPF app?在 Windows 窗体或 WPF 应用程序中使用“Wingdings”字体是否合适?
【发布时间】:2008-10-31 13:20:41
【问题描述】:

我有一个 WPF 控件,它有一个“投资者”列表,在列表的右栏中有一个“删除”按钮。

我可以浪费一些时间在 Photoshop 中制作“x”的图像。或者,我可以只使用 Wingdings 字体并将内容设置为“Õ”(这是一个看起来很酷的删除按钮)。

这样合适吗?我的想法是……虽然不是每台计算机上都有每个字体系列,但我很确定可以肯定地说,如果您正在运行我的 WPF Windows 窗体程序,那么您就有 Wingdings。

你怎么看?请尝试就此事提供统计数据(不仅仅是感觉)。我应该担心字体大小吗?等等

【问题讨论】:

标签: wpf winforms fonts compatibility


【解决方案1】:

老实说,如果您使用的是 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>

只需将此样式应用到一个按钮,您就会得到一个即时“删除”按钮!

【讨论】:

  • 好点是 WPF 允许一些非常酷的矢量内容...但是 Wingdings 中有很多可能的东西有人可能想要。你认为这是他们所有人都应该走的路吗? (顺便说一句,答案很好)。
  • 你 +up 不错的答案。就像我一样。
  • 我真的很喜欢在 WPF 中的矢量图形方面做很多事情。它有助于自己制作干净、可扩展的图形。字体可能会也可能不会很好地缩放,具体取决于分辨率。
  • @Bob King:TrueType 字体专门设计用于在不同的分辨率下很好地缩放
【解决方案2】:

我认为你应该没问题,尤其是使用 WPF。我不知道 Wingdings 字体是否在每台 Windows 机器上(可能是),但我知道 Marlett 字体中的字符在 Win XP UI 中使用。

【讨论】:

  • 很好的答案,谢谢你关于 Marlett 的观点(我不知道)。
【解决方案3】:

假设您可以显示 Unicode,那么对于您想要做的事情,许多字体中有大量字形。

例如,这是(可能)Arial 中的 unicode 字符:✖

我从 http://www1.tip.nl/~t876506/UnicodeDisplay.html 获取了角色参考,但我相信还有比这更好的地方可以找到

【讨论】:

  • 当然,那你必须希望每个客户都有字体,或者进入字体部署(我个人不喜欢)。
  • 那个字符对我来说显示为一个带有“2716”的小盒子。
  • 那个链接失效了。
【解决方案4】:

抱歉,我想不出有什么比使用翼形字符进行控件更能让应用程序看起来更业余的了。

【讨论】:

  • 真的吗?随着干净和扁平界面的复兴(谢天谢地),许多扁平符号重新流行起来。看看这个“类似 Zune”的界面,它使用 windows 控件的wingdings:stevenhook.blogspot.com.br/2011/01/…
【解决方案5】:

我认为不错的解决方案是从 Wingdings 中获取您喜欢的字形,并将它们转换为 WPF 形状,作为应用程序的资源。这只会为您的应用增加几 kB,并且您不会依赖 Wingdings。

【讨论】:

  • 为了记录,你会怎么做?
  • 我认为 Blend 做到了,根据我阅读的一些博客文章,但现在我看起来,它的工作方式如下:msdn.microsoft.com/en-us/library/cc296385.aspx - 你可以嵌入整个字体,或者只是一个子集你用
【解决方案6】:

大部分问题是忘记添加字节大小。

在 C# (Winform) 中我使用:

static Font wingdings2 = new Font("Wingdings 2", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(2)));

所以我可以:

myTextBoxt.Font = wingdings2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多