我正在使用GTK#和TextWidget来显示可编辑的文本。我希望每个文本项目的背景颜色由角色决定(这样所有" A"都是红色,所有" G"是绿色,所有" C&# 34;蓝色等)。
这似乎有可能,但有没有人知道一种有效的方式告诉GTK#以这种方式为输入文字着色?
答案 0 :(得分:1)
您可以使用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 ();