2014-06-01 4 views
2

Я использую текстовый редактор AvalonEdit от ICSharpCode, и у меня есть собственный DocumentColorizingTransformer.Как центрировать текст в AvalonEdit?

Я хотел бы сосредоточить некоторые строки текста внутри ColorizeLine. Это возможно?

Я смог выяснить, как изменить текст линии любым другим способом (цвет, курсив, подчеркивание и т. Д.), Но я не могу понять, как изменить выравнивание текста строки .. .

ответ

1

Я закончил тем, что копаться в источнике редактора для этого:

во-первых, в VisualLineTextParagraphProperties.cs, я должен был выставить TextAlignment с помощью новой внутренней собственности (дефолте в LeftAligned), так что я мог установить его (и, конечно же, вернуть его из получателя публичной собственности).

Затем в TextView.cs в методе BuildVisualLine мне пришлось протестировать текст documentLine для условий, при которых мне нужна линия, центрированная, а затем соответствующим образом измените объект paragraphProperties.

Обратите внимание, что мне пришлось сделать копию itemsProperties - иначе центрированное выравнивание перетекало бы в следующую строку (поскольку данный объект paragraphProperties, кажется, повторно используется).

отметить также, что я не мог найти способ использовать VisualLineElementGenerator сделать это - несмотря на то, что все еще смотрит на меня, как это было бы место, чтобы изменить что-то вроде TextAlignment ...

+0

Для право- выравнивание по бокам, при создании 'TextLine' требуется несколько декретов в пикселях до' availableSize.Width'. В противном случае курсор луча будет невидимым, поскольку он выталкивается за пределы границы. – zmechanic

Смежные вопросы