如何在 AvalonEdit 中使文本居中?

2024-03-01

我正在使用 ICSharpCode 的 AvalonEdit 文本编辑器,并且有一个自定义 DocumentColorizingTransformer。

我想将 ColorizeLine 内的某些文本行居中。这可能吗?

我已经能够弄清楚如何以我想要的所有其他方式更改该行的文本(颜色、斜体、下划线等),但我不知道如何更改该行的文本对齐方式...


我最终不得不深入研究编辑的来源:

首先,在VisualLineTextParagraphProperties.cs https://github.com/icsharpcode/AvalonEdit/blob/master/ICSharpCode.AvalonEdit/Rendering/VisualLineTextParagraphProperties.cs,我必须将文本对齐方式公开给一个新的内部属性(默认为左对齐),这样我就可以设置它(当然,从公共属性的 getter 返回它)。

然后,在文本视图.cs https://github.com/icsharpcode/AvalonEdit/blob/master/ICSharpCode.AvalonEdit/Rendering/TextView.cs,在 BuildVisualLine 方法中,我必须测试 documentLine 的文本是否需要行居中,然后相应地更改段落 Properties 对象。

请注意,我必须复制 paragraphProperties - 否则居中对齐会渗透到下一行(因为给定的 paragraphProperties 对象似乎被重用)。

另请注意,我找不到使用 VisualLineElementGenerator 来执行此操作的方法 - 尽管在我看来它仍然是更改 TextAlignment 等内容的地方...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 AvalonEdit 中使文本居中? 的相关文章

随机推荐