2015-10-16 72 views
0

我正在使用GTK#和TextWidget來顯示可編輯文本。我希望每個文本項目的背景顏色由字符決定(所有「A」都是紅色的,所有的「G」都是綠色的,所有的「C」都是藍色的,等等)。GTK中的顏色文本背景#

看起來這可能是可能的,但有誰知道一種有效的方式來告訴GTK#這種方式來顏色輸入文本?

回答

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(); 
+0

你知道我該怎麼做,以響應用戶添加文本? – evolvedmicrobe

+0

是的。 InsertWithTags等同於Insert和ApplyTag。我已經爲源代碼添加了一個示例。 –