【问题标题】:Set different Font-Size for each character in a string using Blend Visual Studio WPF C# [closed]使用 Blend Visual Studio WPF C# 为字符串中的每个字符设置不同的字体大小 [关闭]
【发布时间】:2023-11-21 19:56:01
【问题描述】:

我正在尝试创建一个文本框,其中正好有 7 个字符,其中前 4 个可能是中等大小,接下来的 2 个可能太大,最后一个数字可能显示为最后两个数字的幂那太大了。这确实是一件令人不安的事情,即使在为此工作了很长时间之后也是如此。 提前谢谢。

【问题讨论】:

  • 我不知道这是否适用于 Blend,但您可以在 TextBlock 中使用 Run 元素,可以单独设置样式(包括字体大小)。如果您需要TextBox(即用户可以编辑的内容),我认为您必须切换到RichTextBox,它提供类似的嵌套元素以提供每个字符的单独样式。
  • 是的 @Onur 谢谢。

标签: c# wpf string visual-studio-2010 expression-blend


【解决方案1】:

你可以这样做

XAML

<RichTextBox>
    <FlowDocument>
        <Paragraph>
            <Run FontSize="8" x:Name="SmallRun">
                1234
            </Run>
            <Run FontSize="16" x:Name="LargeRun">
                34
            </Run>
            <Run x:Name="PowerRun">
                4
            </Run>
        </Paragraph>
    </FlowDocument>
</RichTextBox>

C#

var text = LargeRun.Text;
var firstNo = int.Parse(text.Substring(0, 1));
var secondNo = int.Parse(text.Substring(1, 1));
PowerRun.FontSize = Math.Pow(firstNo, secondNo);

我也把它放在GitHub 上。

编辑
我看到你已经编辑了你的问题。我认为我发布的大部分代码仍然是相关的,但您可能最终会做一些不同的样式。

编辑 2
运行代码的图像:

编辑 3
你可以这样做

<Run x:Name="PowerRun" BaselineAlignment="Superscript" FontSize="8">
    4
</Run>

得到这个

【讨论】:

  • 电源运行不起作用
  • 添加了一张图片,显示了我的电脑上运行的代码
  • 代码仍然很好我明白了你试图展示的内容。但是最后一个权力数字仍然是一个问题。
  • 你需要在你的运行中有 BaselineAlignment="Superscript" 无论如何谢谢。它奏效了我修改了你的答案。
  • 非常感谢您的快速帮助。
最近更新 更多