私は現在、次のコードをAvalonEdit TextEditor
のLineTransformer
として使用しています。現在の単一の検索結果を選択肢で強調表示したいのですが、強調表示されたテキストの表示よりもDocumentColorizingTransformer
の書式設定が優先されるため、選択範囲がほとんど見えません。強調表示された選択をフォーマットの代わりに、またはフォーマットの前に表示するにはどうすればよいですか?AvalonEditは他の書式よりも選択を選択します
public class ColorizeSearchResults : DocumentColorizingTransformer {
public ColorizeSearchResults() : base() {
SearchTerm = "";
MatchCase = false;
}
public string SearchTerm { get; set; }
public bool MatchCase { get; set; }
protected override void ColorizeLine(DocumentLine line) {
if (SearchTerm.Length == 0)
return;
int lineStartOffset = line.Offset;
string text = CurrentContext.Document.GetText(line);
int count = 0;
int start = 0;
int index;
while ((index = text.IndexOf(SearchTerm, start, MatchCase ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase)) >= 0) {
base.ChangeLinePart(
lineStartOffset + index,
lineStartOffset + index + SearchTerm.Length,
(VisualLineElement element) => {
element.TextRunProperties.SetForegroundBrush(Brushes.White);
element.TextRunProperties.SetBackgroundBrush(Brushes.Magenta);
});
start = index + 1;
count++;
}
}
}
Example of formatting showing over selection
私は別のプログラムで年後に戻って、この問題に来て、 'IBackgroundRenderer'を試してみました。描画された矩形が選択矩形よりもわずかに大きかったが、大きな問題ではなかったという事実以外は完全に機能していた。 –
明らかに軽微な問題を修正しただけで、蛍光ペンからペンのブラシを取り外すことは明らかでした。 –