WPF RichTextBox 使用Paragraph显示富文本(角标小数字)

最近项目中需要展示和编辑角标小数字,研究下了,可以RichTextBox 的Paragraph实现。

定义组件RichTextBox,添加右上角右下角小数字:

xml 复制代码
        <RichTextBox Margin="10" Height="40" Name="richTextBox"> 
          <FlowDocument>
            <Paragraph>
              <Run Text="1" FontSize="20" BaselineAlignment="Center"/>
              <Run Text="2" FontSize="10" BaselineAlignment="Bottom"/>
              <Run Text="2" FontSize="10" BaselineAlignment="TextBottom"/>
              <Run Text="2" FontSize="10" BaselineAlignment="Subscript"/>
              <Run Text="3" FontSize="20" BaselineAlignment="Center"/>
              <Run Text="4" FontSize="10" BaselineAlignment="Top"/>
              <Run Text="4" FontSize="10" BaselineAlignment="TextTop"/>
              <Run Text="4" FontSize="10" BaselineAlignment="Superscript"/>
            </Paragraph>
          </FlowDocument>
        </RichTextBox>

显示效果如下:

原先项目中所有的文本run都是默认BaselineAlignment="Center"的,重新指定想要变成角标文本run的BaselineAlignment后,好像并没有达到想要的右上角、右下角角标效果。

经过研究测试后发现,首个字符的BaselineAlignment指定方式很关键,如果指定为Baseline:

xml 复制代码
<RichTextBox Margin="10" Height="40" Name="richTextBox"> 
  <FlowDocument>
    <Paragraph>
      <Run Text="1" FontSize="20" BaselineAlignment="Baseline"/>
      <Run Text="2" FontSize="10" BaselineAlignment="Bottom"/>
      <Run Text="2" FontSize="10" BaselineAlignment="TextBottom"/>
      <Run Text="2" FontSize="10" BaselineAlignment="Subscript"/>
      <Run Text="3" FontSize="20" BaselineAlignment="Center"/>
      <Run Text="4" FontSize="10" BaselineAlignment="Top"/>
      <Run Text="4" FontSize="10" BaselineAlignment="TextTop"/>
      <Run Text="4" FontSize="10" BaselineAlignment="Superscript"/>
    </Paragraph>
  </FlowDocument>
</RichTextBox>

则显示效果如下:

大概能达到想要的效果。

下对齐可选Bottom、TextBottom、Subscript,效果并无区别;

上对齐可选Top、TextTop、Superscript,其中Superscript稍微靠上一些,可按需选择。

相关推荐
津津有味道2 小时前
ISO18000-6C协议UHF6C超高频RFID读写C#源码
c#·uhf6c·超高频·iso18000-6c
白雪公主的后妈3 小时前
Auto CAD二次开发——创建圆弧对象
c#·cad二次开发·创建圆弧对象
rollingman5 小时前
WPF GroupBox 淡入淡出
wpf
weixin_307779136 小时前
C#程序实现将MySQL的存储过程转换为Azure Synapse Dedicated SQL Pool的T-SQL存储过程
c#·自动化·云计算·运维开发·azure
"菠萝"7 小时前
C#知识学习-018(方法参数传递)
学习·c#·1024程序员节
CiLerLinux8 小时前
第三章 FreeRTOS 任务相关 API 函数
开发语言·单片机·物联网·c#
.NET修仙日记8 小时前
C#/.NET 微服务架构:从入门到精通的完整学习路线
微服务·c#·.net·.net core·分布式架构·技术进阶
yy76349666810 小时前
WPF 之 简单高效的Revit多语言支持方案
java·大数据·linux·服务器·wpf
歪歪10018 小时前
在C#中详细介绍一下Visual Studio中如何使用数据可视化工具
开发语言·前端·c#·visual studio code·visual studio·1024程序员节
Eiceblue18 小时前
如何通过 C# 高效读写 Excel 工作表
c#·visual studio·1024程序员节