GTK 中的彩色文本背景#
Color Text Background in GTK#
我正在使用 GTK# 和 TextWidget 来显示可编辑文本。我希望每个文本项的背景颜色由字符决定(这样所有 "A" 都是红色,所有 "G" 都是绿色,所有 "C" 都是蓝色,等等)。
这似乎是可行的,但有谁知道告诉 GTK# 以这种方式为输入文本着色的有效方法吗?
您可以使用 TextTag 更改 Gtk.TextView 中文本的颜色。
下面的示例创建了一个错误标记,它在插入文本时以红色背景突出显示文本。
var textView = new Gtk.TextView ();
var errorTag = new TextTag ("error");
errorTag.Background = "#dc3122";
errorTag.Foreground = "white";
errorTag.Weight = Pango.Weight.Bold;
textView.Buffer.TagTable.Add (errorTag);
string text = "foo";
// Insert text with tag.
TextIter start = textView.Buffer.EndIter;
textView.Buffer.InsertWithTags (ref start, text, errorTag);
text = "bar";
// Insert text then apply tag.
textView.Buffer.Insert (ref start, text);
start = textView.Buffer.GetIterAtOffset (5);
TextIter end = textView.Buffer.GetIterAtOffset (6);
textView.Buffer.ApplyTag (errorTag, start, end);
var vbox = new Gtk.VBox ();
Add (vbox);
vbox.PackStart (textView);
vbox.ShowAll ();
我正在使用 GTK# 和 TextWidget 来显示可编辑文本。我希望每个文本项的背景颜色由字符决定(这样所有 "A" 都是红色,所有 "G" 都是绿色,所有 "C" 都是蓝色,等等)。
这似乎是可行的,但有谁知道告诉 GTK# 以这种方式为输入文本着色的有效方法吗?
您可以使用 TextTag 更改 Gtk.TextView 中文本的颜色。
下面的示例创建了一个错误标记,它在插入文本时以红色背景突出显示文本。
var textView = new Gtk.TextView ();
var errorTag = new TextTag ("error");
errorTag.Background = "#dc3122";
errorTag.Foreground = "white";
errorTag.Weight = Pango.Weight.Bold;
textView.Buffer.TagTable.Add (errorTag);
string text = "foo";
// Insert text with tag.
TextIter start = textView.Buffer.EndIter;
textView.Buffer.InsertWithTags (ref start, text, errorTag);
text = "bar";
// Insert text then apply tag.
textView.Buffer.Insert (ref start, text);
start = textView.Buffer.GetIterAtOffset (5);
TextIter end = textView.Buffer.GetIterAtOffset (6);
textView.Buffer.ApplyTag (errorTag, start, end);
var vbox = new Gtk.VBox ();
Add (vbox);
vbox.PackStart (textView);
vbox.ShowAll ();