J'utilise actuellement le code suivant comme LineTransformer
avec un AvalonEdit TextEditor
. Je veux être en mesure de mettre en évidence le résultat de recherche unique actuel avec une sélection, mais la sélection est à peine visible car le formatage du DocumentColorizingTransformer
a préséance sur le texte en surbrillance. Comment puis-je obtenir la sélection en surbrillance à afficher au lieu ou avant le formatage?AvalonEdit afficher la sélection sur autre formatage
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
je suis revenu à cette question un an plus tard avec un programme différent et essayé le 'IBackgroundRenderer'. Cela a fonctionné parfaitement autrement que le fait que les rectangles dessinés étaient légèrement plus grands que les rectangles de sélection mais pas un gros problème. –
Apparemment, enlever le pinceau du surligneur a même corrigé ce problème mineur. –