如何在AvalonEdit中居中文本?

3

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

我想要在ColorizeLine中使某些行的文本居中,这是否可行?

我已经能够找到如何以其他任何方式更改行的文本(颜色、斜体、下划线等),但我无法找到如何更改行的文本对齐方式...

1个回答

2

我最终不得不深入编辑器的源代码:

首先,在VisualLineTextParagraphProperties.cs中,我必须通过一个新的内部属性(默认为左对齐)公开TextAlignment,以便我可以设置它(当然,也可以从公共属性的getter中返回它)。

然后,在TextView.cs中,在BuildVisualLine方法中,我必须测试documentLine的文本是否符合我想要居中的条件,然后相应地更改paragraphProperties对象。

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

还要注意,我找不到使用VisualLineElementGenerator来做这件事的方法 - 即使在我的看法中,那仍然是改变类似TextAlignment这样的东西的地方...


为了右对齐,当构建“TextLine”时,需要将“availableSize.Width”减少2个像素。否则,光标会被推到右边框之外,从而变得不可见。 - zmechanic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接