20

WPF TextBox の文字間隔を変更したいと思います。CSSで利用できるもの
のようなもの。 XAML では可能だと思います。最も簡単な方法は何ですか?letter-spacing: 5px

GlyphRun オブジェクトと Glyphs 要素の紹介」ドキュメントを見つけましたが、非常に役に立たないことがわかりました。

これはそのページのコード例です:

<!-- "Hello World!" with explicit character widths for proportional font -->
<Glyphs 
   FontUri             = "C:\WINDOWS\Fonts\ARIAL.TTF"
   FontRenderingEmSize = "36"
   UnicodeString       = "Hello World!"
   Indices             = ",80;,80;,80;,80;,80;,80;,80;,80;,80;,80;,80"
   Fill                = "Maroon"
   OriginX             = "50"
   OriginY             = "225"
/>

Indices同じドキュメント ページでは、プロパティの機能について次の「説明」が提供されています。

ここに画像の説明を入力

私はそれが何を意味するのか分かりません。また、インデックスが正しいかどうかもわかりません。コード内のコメントは、私が気にしない「文字幅」について語っています。文字の幅を調整したい。

Glyphsまた、要素を TextBoxに適用する方法の例もありません。試してみると、WPF テスト アプリがクラッシュしました。


私がやりたいことは、WPF TextBox 内の描画された文字の間に表示される空白を少し増やすことです。テキストの長さと内容は異なります。Indicies新しいキャラクターが登場するたびにプロパティを変更する必要がありますか? 「すべての文字に対して、通常よりも 20% 多いスペースにする」と言う方法はありますか。

誰でも私を助けることができますか?

4

4 に答える 4

28

Glyphs と FontStretch を試してみましたが、探していた結果を簡単に得ることができませんでした。自分の目的に合ったアプローチを思いつくことができました。多分それは他の人にとってもうまくいくでしょう。

<ItemsControl ItemsSource="{Binding SomeString}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" 
                       Margin="0,0,5,0"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

任意の文字列にバインドでき、間隔を適切に設定するために文字幅の検出を行う必要はありません。右マージンは、文字間のスペースです。

例:

字詰め

于 2013-09-18T16:56:22.930 に答える
1

FontStretchはあなたのためのオプションですか?

それ以外の場合は、事前幅の意味を示す画像があるので、これを調べてください。私は以前にこれを行ったことがなく、これが機能するかどうかはわかりませんが、左右のサイドベアリングを増やすことはあなたが望むものかもしれません!

于 2011-04-30T18:14:28.690 に答える