首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WPF TextBox中指定字母间距或角化?

如何在WPF TextBox中指定字母间距或角化?
EN

Stack Overflow用户
提问于 2011-04-30 17:47:51
回答 3查看 23.1K关注 0票数 20

我想修改WPF TextBox中字符之间的间距。

类似于CSS中可用的letter-spacing: 5px的东西。

我认为这在XAML中是可能的;最简单的方法是什么?

我找到了"介绍GlyphRun对象和象形文字元素“文档,发现它非常没有帮助。

这是该页中的代码示例:

代码语言:javascript
复制
<!-- "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%的空间,为每个字符”。

有人能帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-18 16:56:22

我尝试了字形和FontStretch,但很难得到我想要的结果。我想出了一种适合我目的的方法。也许这对其他人也有帮助。

代码语言:javascript
复制
<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>

我可以绑定到任何字符串,不需要做任何字符宽度检测,以正确设置间距。右边框是字母之间的空格。

示例:

票数 30
EN

Stack Overflow用户

发布于 2011-04-30 18:14:28

FontStretch是你的选择吗?

否则,您可能需要查看,这里有一个图像,显示了前进宽度的含义。虽然我以前没有这样做,也不知道这是否有效,增加左右方位可能是你想要的!

票数 1
EN

Stack Overflow用户

发布于 2014-05-05 02:34:46

因为它的价值。。。

如果您可以选择将您的实现切换到RichTextBox,这可能比您在2013年9月发现的工作更容易。我只是试着满足我自己的需要,而且它能满足我所需要的东西。我看不出RichTextBox有一种方法可以像排字员那样控制单个空格的裁剪。但是TextBox正在消耗额外的空间(将多个相邻的空间合并为单个空间),比如HTML。我需要空格显示与文本字符串中相同的间距,而RichTextBox会这样做。

代码语言:javascript
复制
<RichTextBox x:Name="MyRichTextBox"></RichTextBox>

我不是专家,但似乎您无法在XAML中指定文本内容。我必须在代码隐藏事件中指定它:

代码语言:javascript
复制
this.MyRichTextBox.AppendText("V A R I E D      S P A C E S");
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5843562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档