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稍微靠上一些,可按需选择。

相关推荐
一条晒干的咸魚19 分钟前
【C#学习笔记03】进制转换与反码、补码、原码
开发语言·笔记·学习·c#
Rverdoser5 小时前
java八股文之消息中间件
c#·linq
SongYuLong的博客6 小时前
C# WPF 串口通信
开发语言·c#·wpf
MarkHD7 小时前
第二十五天 实践分布式数据管理,实现数据在多设备间的同步
分布式·wpf
小码编匠7 小时前
C# 编程技巧实现屏幕录制功能
后端·c#·.net
小码编匠7 小时前
C# + WinForm 基于ModBus协议的智能仓储温控管理系统
后端·c#·.net
秦宇升7 小时前
wpf label 内容绑定界面不显示
wpf
MY-备忘8 小时前
iTextSharp-PDF批量导出
c#
康凯哇咔咔9 小时前
代理模式(Proxy Pattern)
设计模式·c#·代理模式
熊思宇17 小时前
MoonSharp 文档二
c#·moonsharp