gpt4 book ai didi

c# - 在 MigraDoc TextFrame 中测量字符串

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:48 26 4
gpt4 key购买 nike

我已经尝试在他们的论坛上提出问题,但尚未收到回复,希望有人能在这里帮助我。

我在 asp.net 中设置了一个自定义报告屏幕,人们可以在其中拖动标签和字段,Migradoc 通过使用文本框和顶部/左侧/宽度/高度属性将它们放置在它们被拖动的相同位置来相应地生成此屏幕/调整为。这一切都很好,但我遇到的一个问题是,如果文本比文本框长,它会离开页面,我需要页面相应地继续移动,同时将其他对象保留在原位。

我可以使用下面的代码来测量字符串:

Style style = document.Styles["Normal"];
TextMeasurement tm = new TextMeasurement(style.Font.Clone());
float fh = tm.MeasureString(value, UnitType.Millimeter).Height;
float fw = tm.MeasureString(value, UnitType.Millimeter).Width;

但它仅用于比较宽度和框架而不是高度,因为一旦放入较小的区域,它可能会有所不同。有谁知道我如何根据绑定(bind)的宽度/高度值(即在文本框架内)测量此字符串。

最佳答案

查看 XTextFormatter 类中的 CreateBlocks() 方法,以及它如何在循环中调用 MeasureString 以将文本分成多行。

恐怕你必须自己实现这样一个循环。

或者可以使用 DocumentRenderer 类的 PrepareDocument() 方法让 MigraDoc 完成工作,并在完成后查询维度。

顺便说一句:之前在论坛上有人问过类似的问题:
http://forum.pdfsharp.net/viewtopic.php?p=3590#p3590
答案包括一些源代码。

关于c# - 在 MigraDoc TextFrame 中测量字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26883653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com