首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在WPF RichTextBox中获取/设置段落中的段落行高度?

在WPF中,可以通过以下方式获取和设置RichTextBox中段落的行高度:

获取段落行高度:

  1. 首先,通过RichTextBox的Document属性获取文档对象。
  2. 使用Document的Blocks属性获取所有的块元素,块元素包括段落、表格等。
  3. 遍历块元素集合,判断是否为段落(Paragraph)类型。
  4. 对于每个段落,可以通过Paragraph的Inlines属性获取内联元素集合。
  5. 遍历内联元素集合,判断是否为Run类型。
  6. 对于每个Run,可以通过FormattedText类的Height属性获取行高度。

示例代码如下:

代码语言:txt
复制
RichTextBox richTextBox = new RichTextBox();
// 假设已经有内容被添加到RichTextBox中

foreach (Block block in richTextBox.Document.Blocks)
{
    if (block is Paragraph paragraph)
    {
        foreach (Inline inline in paragraph.Inlines)
        {
            if (inline is Run run)
            {
                FormattedText formattedText = new FormattedText(
                    run.Text,
                    CultureInfo.CurrentCulture,
                    FlowDirection.LeftToRight,
                    new Typeface(richTextBox.FontFamily, richTextBox.FontStyle, richTextBox.FontWeight, richTextBox.FontStretch),
                    richTextBox.FontSize,
                    Brushes.Black);

                double lineHeight = formattedText.Height;
                // 在这里可以使用lineHeight,即为段落行高度
            }
        }
    }
}

设置段落行高度: 在WPF中,段落的行高度可以通过设置段落的行间距(LineHeight)属性来实现。可以通过以下方式设置段落的行高度:

代码语言:txt
复制
Paragraph paragraph = new Paragraph();
paragraph.LineHeight = 20; // 设置行高度为20

// 将段落添加到RichTextBox中
richTextBox.Document.Blocks.Add(paragraph);

以上代码将会将RichTextBox中的段落行高度设置为20个逻辑单位(设备无关单位),可以根据实际需求进行调整。

注意:WPF的RichTextBox在处理行高度时,会受到字体、字号、行间距等因素的影响,因此实际显示的行高度可能会有一定的偏差。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在onCreate获取View高度和宽度

何在onCreate获取View高度和宽度 在开发过程中经常需要获取到View宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。...然而新手们经常在onCreate方法中直接调用上面两个方法得到值是0! 这是为什么呢? 因为View绘制是通过两个遍历来完成,一个measure过程,一个layout过程。...而这一切是发生在onCreate方法之后。所以在onCreate中直接使用View.getWidth()和View.getHeight()是无法得到正确。...那应该怎么onCreate获取View宽高呢?...开发者可以通过View.post()方法来获取到View宽高,该方法传递一个Runnable参数,然后将其添加到消息队列,最后在UI线程执行。

5.3K20

何在 WPF 获取所有已经显式赋过值依赖项属性

获取 WPF 依赖项属性值时,会依照优先级去各个级别获取。这样,无论你什么时候去获取依赖项属性,都至少是有一个有效值。有什么方法可以获取哪些属性被显式赋值过呢?...如果是 CLR 属性,我们可以自己写判断条件,然而依赖项属性没有自己写判断条件地方。 本文介绍如何获取以及显式赋值过依赖项属性。...因此,你不能在这里获取到常规方法获取依赖项属性真实类型值。 但是,此枚举拿到所有依赖项属性值都是此依赖对象已经赋值过依赖项属性本地值。如果没有赋值过,将不会在这里遍历中出现。...参考资料 Dependency properties overview - Microsoft Docs 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/wpf-get-local-value-enumerator.html...,以避免陈旧错误知识误导,同时有更好阅读体验。

19540
  • dotnet OpenXML 简单聊聊 PPT 文本解析

    本文将和小伙伴介绍 PPT 文本存放方式 在 PPT 文本框也是形状,只是形状里面添加了特殊设置。...,文本是否自适宽度高度等信息 在 PPT 文本是富文本,可以对文本文本段落进行设置,同时可以对文本每个字符进行设置样式。...打开 PPT 软件,选择一个文本,可以看到段落设置,这些就是段落信息。...接着按照文本段落,也就是换行符将文本分为多个段落,再添加每个段落段落属性,行距等 最后文本需要包含这些段落和文本框属性,横排竖排显示等 从本文上面的描述,其实 PPT 用到文本格式大部分都是...好在几乎所有的属性能做出来效果,都能在 WPF 里面实现,我还没有遇到只有 PPT 能实现渲染效果而在 WPF 不能实现

    1.2K10

    【愚公系列】2023年11月 WPF控件专题 RichTextBox控件详解

    一、RichTextBox控件详解WPFRichTextBox控件是一个功能强大文本编辑器,它允许用户创建富文本格式文本,字体、颜色、大小、格式和对齐方式等。...1.属性介绍WPFRichTextBox控件主要属性如下:Text:用于获取设置RichTextBox纯文本内容。...Document:用于获取设置RichTextBox文档内容,这可以是一个FlowDocument对象。IsReadOnly:用于获取设置RichTextBox是否为只读模式。...Foreground:用于获取设置RichTextBox前景色(文本颜色)。FontSize:用于获取设置RichTextBox中文本字号大小。...FontStyle:用于获取设置RichTextBox中文本字体样式(斜体、加粗等)。TextWrapping:用于获取设置RichTextBox中文本换行方式。

    70600

    RichTextBox

    任何机构都需要创建和编辑文档,因此在机构信息化系统中都需要文档创建、编辑、转换等功能。通常情况下,我们可以使用VisualStudio自带RichTextBox来实现文档编辑功能。...RichTextBox是一个非常小巧精致文字编辑控件,在允许用户输入和编辑文本同时提供了比普通TextBox控件更高级格式控制,设置文本使用粗体,改变字体颜色,也可以设置左右缩排或不缩排,从而调整段落格式...RichTextBox控件可以打开和保存RTF文件或普通ASCII文本文件。 但当我们需要更高级文档编辑功能,控制行距、插入表格或图片时,RichTextBox就无法满足需求了。...TX Text Control控件提供了类似MS Word那样所见即所得文字处理功能和多种文档格式之间转换,可以轻松让应用程序象MS Word一样强大。...下面列出了TX Text Control 与 RichTextBox功能比较。 ? 一.常用文字处理功能 ? 二、高级编程能力 ? 三、支持文件格式 ?

    1.2K50

    【愚公系列】2023年11月 Winform控件专题 RichTextBox控件详解

    BulletIndent属性BulletIndent属性是RichTextBox控件用于设置段落符号缩进属性,也就是设置段落开头符号(例如圆点)离左边界距离。...可以通过设置BulletIndent属性来控制段落符号缩进值。...在Winform设置RichTextBox控件ImeMode属性方法如下:在设计器中选择RichTextBox控件。在属性窗口中选择ImeMode属性。选择合适输入法模式。...当此属性设置为true时,用户可以使用快捷键来执行一些常见文本编辑操作,剪切、复制、粘贴等。当此属性设置为false时,快捷键将不再起作用,用户只能使用鼠标来执行这些操作。...以下是一个Winform中使用RichTextBox控件例子:设置控件属性首先在Visual Studio表单设计器添加一个RichTextBox控件。

    94621

    dotnet OpenXML WPF 解析实现 PPT 文本描边效果

    本文是使用 WPF 做个 PowerPoint 系列博客,本文来告诉大家如何解析 PPT 里面的文本描边效果,在 WPF 应用绘制出来,实现像素级相同 背景知识 在开始之前,期望你了解了 PPT 解析入门知识...如对 PPT 解析了解很少,请参阅 C# dotnet 使用 OpenXml 解析 PPT 文件 在 PPT 里面可以给文本某些文字设置描边效果,描边效果从 OpenXML 层上是不属于特效,只是属于边框属性...= null); 一个文本里面有很多段落段落里面,文本有不同样式,如一段可以有不同加粗文本。相同样式文本放在一个 TextRun 里面。...不同样式文本放在不同 TextRun 里面 因此解析需要先遍历段落,再遍历 TextRun 元素 foreach (var paragraph in textBody.Elements...Text; 接下来就是在界面绘制 绘制 WPF 文字描边 博客,先通过 FormattedText 构建出 Geometry 对象,再通过 Geometry 对象进行绘制 代码如下

    97720

    dotnet OpenXML 文本删除线解析方法

    本文来告诉大家如何解析读取在 OpenXML 里面存放文本删除线,本文使用 PowerPoint 作为例子来告诉大家如何读取然后在 WPF 应用里面显示 在开始之前,期望大家已了解如何在 dotnet...和 WPF 设计不同是,在 WPF 里面,无论是下划线还是删除线等,都是属于文本装饰。但是在 PPT 里面,下划线是下划线,而删除线是删除线。...同时下划线和删除线样式也是特别多 删除线 TextStrikeValues 枚举,在 ECMA 376 第 20.1.10.78 章可以了解到有单线条删除线和双线条删除线,在 OpenXML...EMU 是通过 dotnetCampus.OpenXMLUnitConverter 开源仓库提供,详细请看 Office Open XML 测量单位 获取文本元素文本内容,文本内容需要先读取段落,...接着再获取文本属性和文本 // 读取文本内容 var textBody = shape.TextBody; // 读取段落

    89310

    最全总结 | 聊聊 Python 办公自动化之 Word(

    段落 使用文档对象 paragraphs 属性可以获取文档中所有的段落 注意:这里获取段落不包含页眉、页脚、表格段落 # 获取文档对象中所有的段落,默认不包含:页眉、页脚、表格段落 paragraphs...属性获取段落基本格式信息 包含:对齐方式、左右缩进、行间距、段落前后间距等 # 2、获取某一个段落格式信息 paragraph_someone = paragraphs[0] # 2.1 段落内容...,使用文字块对象 font 属性可以拿到它字体属性 和设置文字块格式属性一一对应,字体名称、大小、颜色、是否加粗、是否斜体等都可以获取到 # 2、文字块格式信息 # 包含:字体名称、大小、颜色、...) print('文档包含表格数量:', table_num) 1 - 表格所有数据 获取表格中所有数据有 2 种方式 第一种方式:通过遍历文档中所有表格,然后按和单元格进行遍历,最后通过单元格...rows = table.rows datas = [] # 每一获取单元格数据组成列表,加入到结果列表 for row in rows: datas.append

    2K20

    最全总结 | 聊聊 Python 办公自动化之 Word(上)

    :这里有 2 种实现方式 分别是: 创建一个空段落对象,增加文字块 Run 时候,同时指定字体样式 使用文档对象创建一个新样式(或已经存在样式),然后添加段落时候,设置到第二个参数 考虑到样式样式复用性...,第 2 种方式可能更实用 对应方法是: document.styles.add_style(style_name,type) 以第 2 种实现方式为例,新增一个自定义样式段落设置段落字体名称...,否则会报错 最后,添加段落时候,将上面创建样式传入到第 2 个参数即可 使用 add_paragraph() 方法添加一个段落,返回值为一个段落对象 ?...第 2 个参数:表格列数目 第 3 个参数:表格样式 使用/列索引,可以获取表格某一/列所有的单元格对象组成列表 # 添加一个table表格 table = doc.add_table(*...**) # 通过/列索引,获取某一/列所有单元格对象 # 第一所有单元格对象列表 head_cells = table.rows[0].cells 另外,表格对象使用 add_row()、add_column

    93331

    .NET Core使用NPOI导出复杂Word详解

    三、NPOIXWPFRun文本对象创建和属性简单概述: XWPFRun文本对象说明:   XWPFRun是段落文本对象,先创建段落对象才能够在段落对象基础上创建文本对象,并设置相关文本样式。...如下所示: /// /// 创建word文档段落对象和设置段落文本基本样式(字体大小,字体,字体颜色,字体对齐位置) /// <...Word文档SetParagraph(段落)实例创建和段落样式格式设置,大大减少了代码冗余, * 避免每使用一个段落而去创建一次段落实例和设置段落基本样式..."rowsHeight">设置文本位置(设置之间行间),从而实现table高度设置效果 /// 是否加粗(true加粗...(:微软雅黑,华文楷体,宋体) xwpfRun.SetTextPosition(rowsHeight);//设置文本位置(设置之间行间),从而实现table高度设置效果

    4.1K30

    03.HTML头部CSS图像表格列表

    浏览器将图像显示在文档图像标签出现地方。如果你将图像标签置于两个段落之间,那么浏览器会首先显示第一个段落,然后显示图片,最后显示第二段。...HTML 图像- 设置图像高度与宽度 height(高度) 与 width(宽度)属性用于设置图像高度与宽度。 属性值默认单位为像素: 提示: 指定图像高度和宽度一个很好习惯。...注意: 加载页面时,要注意插入页面图像路径,如果不能正确设置图像位置,浏览器无法加载图片,图像标签就会显示一个破碎图片。 更多实例 排列图片 本例演示如何在文字中排列图像。...浮动图像 本例演示如何使图片浮动至段落左边或右边。 设置图像链接 本例演示如何将图像作为一个链接使用。 创建图像映射 本例显示如何创建带有可供点击区域图像地图。其中每个区域都是一个超级链接。... 这个标签就是放在三间房子里面的东西,每一个 就是表格一。 表格每一被分为一个个单元格。

    19.4K101

    最全总结 | 聊聊 Python 办公自动化之 PPT(

    为了生成表格美观性,对表高、列宽进行调整很有必要 其中,表格对象 columns、rows 属性分别用于获取所有的列对象、对象 def set_table_column_width(table...(table, 2, 1.2) 2-2 设置单元格数据 首先,通过索引、列索引获取对应单元格对象 # 获取某一个单元格对象 # 注意:索引从0开始 # 比如:获取第一、第一列单元格对象 cell...(datas[row_index][column_index]) 2-3 单元格样式调整 调整单元格样式包含下面 3 步 获取单元格文本对象 拿到文本对象段落对象 通过段落,指定段落对齐方式及文字样式..., 0], font_bold=True) 需要指出是,单元格文本控件除了使用默认段落,也可以添加新段落设置不同内容及样式 2-4 单元格背景颜色...因此,在实际项目中,我们只需要先获取图片宽高比,然后等比例设置到宽度和高度参数即可 from PIL import Image def get_image_aspect_ratio(image_path

    2.7K11

    dotnet OpenXML 聊聊文本段落对齐方式

    在 Word 和 PPT 文本段落对齐规则是相同,对齐规则比较多,本文将一一告诉大家 文本段落对齐,需要设置段落属性上,在 OpenXML SDK 里,使用 TextAlignmentTypeValues...WPF 项目,添加如下代码用来测试 private void MainWindow_Loaded(object sender, RoutedEventArgs e) {...代码 本文所有代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文代码.../lindexi/lindexi_gd.git 获取代码之后,进入 Pptx 文件夹 参考 对齐文本 怎样将PPT文字强制对齐(分散对齐)-百度经验 word两端对齐与分散对齐区别_Office教程网...两端分散对齐怎么设置_Word文档两端对齐.分散对齐如何设置_博客-CSDN博客 office2016Word文档字数不同段落如何两端都对齐-百度经验 Word文档左右两端对齐有什么用,怎么调整

    1.4K30

    Office OpenXml SDK 文本段落允许标点溢出边界属性

    在进行 PPT 解析时候,因为 PPT 是支持在文本框里面的文本段落设置允许标点溢出边界可以在符号超过了文本框长度,不会换行,而是显示在文本框之外 在 PPT 里面可以在段落设置允许标点溢出边界请看下面...在段落属性里面,如下面代码 通过 hangingpunct 属性是 0 表示不允许标点溢出边界,使用 1 或不设置表示允许标点溢出边界...,这个值默认值是 1 也就是不填写这个属性就表示不将标点带到下一 在 OpenXml 里面可以通过下面代码判断 private void HeawearajakeheCawchalljorurko(...true; } 没错,这个属性使用是 Height 其实我没有猜出,不过好在微软属性上面有注释,所以还是方便找到这个属性 这个属性和 WPF Wrap 属性是不相同,需要自己写布局 TextParagraphPropertiesType.Height...,同时有更好阅读体验。

    60010

    微信图片翻译技术优化之路

    在 probability map 训练,文本行标注数据像素点作为正例样本,但是段落存在背景像素点(段落中文本行之间空白区域、段落标注噪音区域等),导致训练效果不佳。...检测任务中一般对于文本框区域进行一定比例向内收缩( DBNet shrink ratio 设置),主要是解决相邻文本行比较相近问题,收缩之后预测结果可以更好分割相邻,对于检测结果再进行反比例扩展...文本行基于单行数据,不需要考虑图像属性,比如字体风格,高度等。但是对于段落框,不同风格段落往往属于不同段落标题和正文)。...GAN 等生成式模型在图片修复Conv 操作会引入上下不同/列信息,因此导致按(按列)分布背景引入周边(列)噪音数据。...主要步骤如下表: 处理逻辑 结果图片展示 预处理 1.原始图片 norm 擦除图片中文字 2.裁剪文字区域子图3.聚类获取文字和背景颜色4.根据周边颜色不同设置文字mask 5.根据子图和 mask

    2.4K20

    dotnet 读 WPF 源代码笔记 简单聊聊文本布局换行逻辑

    WPF 里面,带了基础文本库功能, TextBlock 等。...本文就仅来了解 SimpleTextLine 实现 在 SimpleTextLine 里面,实现逻辑是将当前文本在传入宽度内进行一布局,如果能在一进行布局,那就返回值,否则返回空 文本里面有段落和...也就是说在一段里面是不会存在多个换行符。一个段落里面将会因为文本框宽度限制而存在多行。...此方法对比开放给开发者使用版本优势在于可以批量获取,给开发者使用版本只能一个个字符获取,性能上远远不如调用此方法获取。...以上 AdvanceWidth 将是字符宽度比例,可以乘以 designToEm 设计时字号计算出 WPF 单位宽度 也就是文本单行排版里面就是通过各个字符设计时宽度计算是否可以在一排列,

    61230
    领券