“ Wingdings”を使用するのは適切ですか? Windows FormsまたはWPFアプリのフォント?
-
05-07-2019 - |
質問
「投資家」のリストを持つWPFコントロールがあり、リストの右側の列に「削除」があります。ボタン。
「x」の画像を作成するのに時間を費やすこともできます。フォトショップで。または、Wingdingsフォントを使用して、コンテンツを"Õ"に設定することもできます。 (これにより、かっこいい削除ボタンが作成されます)。
これは適切ですか?私の考えは...すべてのフォントファミリがすべてのコンピューターにあるわけではありませんが、私のWPF Windows Formsプログラムを実行している場合、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>
このスタイルをボタンに適用するだけで、すぐに「削除」が得られます。ボタン!
他のヒント
ユニコードを表示できると仮定すると、あなたがしようとしていることのために多くのフォントにたくさんのグリフがあります。
たとえば、これは(おそらく)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;