跟随/剪辑到文字的文字?

Siy*_*ion 5 c# wpf text textbox textblock

好的,所以我知道如何将文本剪辑到特定的几何体,但是文本不会根据剪辑自动换行,所以如果你有"勾号",怎么去实现类似于下面所示的效果呢?作为几何/路径?

是手动添加适合每一行的文本框然后根据将/不适合分割文本的情况?

示例图片

Dr.*_*ABT 1

我能想到的唯一方法是创建一个自定义控件并重写 OnRender。该自定义控件将具有定义其剪辑区域的几何图形和字符串类型的“文本”属性。它还具有 int 类型的 lineheight 属性。

在 OnRender 中,您可以测量要在当前 X、Y 位置绘制的文本(从剪辑几何体的左上角开始)。一次测量一个单词,看看该单词的边界框是否完全在剪辑内几何。这可以使用几何的 HitTest API 来实现,并测试单词边界矩形的所有四个点是否都在几何内。如果是,则绘制该单词,如果不是,则将 X 增加一个字母间距并再次测量。如果到达控件的边缘,请将 X 重置为零并将 Y 增加一行间距并重复,使用类似于电视绘制像素的方式的扫描线方法。

基本上,您想要做的是创建自己的 WrapPanel 或 TextBlock 并进行文本换行。如果可以的话,我会在 WPF 框架上调用 Reflector 或 ILSpy 以查看 WrapPanel / TextBlock 中的代码,或者搜索有关“使用文本换行编写自定义 WrapPanel”/“TextBlock”/“RichTextControl”的文章。无论怎么想,这都不是一件容易的事,但上述方法将为您提供所需的基本信息。

此致,