如何更改 ICSharpCode.AvalonEdit.TextEditor 处的文本颜色?
How to change text color at ICSharpCode.AvalonEdit.TextEditor?
美好的一天!
我正在尝试制作简单的代码编辑器,所以我希望能够 select 文本行并将其颜色更改为红色,使用 ICSharpCode.AvalonEdit.TextEditor
。
但是不知道怎么用。
你能帮我改变文本行的颜色吗?
谢谢!
到select一行,使用Select()方法:
var line = editor.Document.GetLineByOffset(lineOffset);
editor.Select(line.Offset, line.Length);
虽然以编程方式更改行的颜色很棘手,因为 AvalonEdit 是代码编辑器,而不是富文本编辑器,着色主要用于语法高亮显示。根据来自 SharpDevelop 论坛的 this post,您应该创建一个 DocumentColorizingTransformer。他们的示例应该适合您(我删除了所有错误检查代码以提高可读性):
class LineColorizer : DocumentColorizingTransformer
{
int lineNumber;
public LineColorizer(int lineNumber)
{
this.lineNumber = lineNumber;
}
protected override void ColorizeLine(ICSharpCode.AvalonEdit.Document.DocumentLine line)
{
if (!line.IsDeleted && line.LineNumber == lineNumber) {
ChangeLinePart(line.Offset, line.EndOffset, ApplyChanges);
}
}
void ApplyChanges(VisualLineElement element)
{
// This is where you do anything with the line
element.TextRunProperties.SetForegroundBrush(Brushes.Red);
}
}
然后,要将它应用到您的文档中,您可以按如下方式使用它:
editor.TextArea.TextView.LineTransformers.Add(new LineColorizer(lineOffset));
美好的一天!
我正在尝试制作简单的代码编辑器,所以我希望能够 select 文本行并将其颜色更改为红色,使用 ICSharpCode.AvalonEdit.TextEditor
。
但是不知道怎么用。 你能帮我改变文本行的颜色吗?
谢谢!
到select一行,使用Select()方法:
var line = editor.Document.GetLineByOffset(lineOffset);
editor.Select(line.Offset, line.Length);
虽然以编程方式更改行的颜色很棘手,因为 AvalonEdit 是代码编辑器,而不是富文本编辑器,着色主要用于语法高亮显示。根据来自 SharpDevelop 论坛的 this post,您应该创建一个 DocumentColorizingTransformer。他们的示例应该适合您(我删除了所有错误检查代码以提高可读性):
class LineColorizer : DocumentColorizingTransformer
{
int lineNumber;
public LineColorizer(int lineNumber)
{
this.lineNumber = lineNumber;
}
protected override void ColorizeLine(ICSharpCode.AvalonEdit.Document.DocumentLine line)
{
if (!line.IsDeleted && line.LineNumber == lineNumber) {
ChangeLinePart(line.Offset, line.EndOffset, ApplyChanges);
}
}
void ApplyChanges(VisualLineElement element)
{
// This is where you do anything with the line
element.TextRunProperties.SetForegroundBrush(Brushes.Red);
}
}
然后,要将它应用到您的文档中,您可以按如下方式使用它:
editor.TextArea.TextView.LineTransformers.Add(new LineColorizer(lineOffset));