Autor Wątek: Kolorowy tekst  (Przeczytany 1240 razy)

Offline Frondeus

  • Użytkownik

# Luty 13, 2011, 16:58:27
Proboje pokolorować tekst. Problemem nie jest samo kolorowanie (RichTextBox i SelectText) lecz wychwycenie co i jak pokolorować.
A dokładniej:
Tworze prosty klient do MUD. Co i jak pokolorować mam zapisane jako RegEX w pliku XML. Np:
  <color rgb="ffff00" pattern="[a-zA-z]* [a-zA-z]* elf."/> Wszystko pobieram, nie ma z tym problemu.
Więcej kłopotu jest gdy musze pokolorować np taki tekst:
Cytuj
Wielki goblin masakruje cie
majac w pliku XML:
   <color rgb="ff0000" pattern=" masakruje cie "/>
   <color rgb="ffffff" pattern=" cie "/>
Jak do tej pory kolorowanie robiłem poprzez Zastępowanie wyrazen
Regex.Replace tak aby "cos tam [wyrazenie] cos tam" bylo zastapione "cos tam @[wyrazenie]@ cos tam". Potem juz tylko split z (@). i ładnie podzielony tekst, wraz z zaznaczeniem co jest do pokolorowania. W tym wypadku jednak wystąpi takie cuś:
Cytuj
Wielki goblin @ masakruje@ cie @@
czyli podzieli niepoprawnie. Zmieniłem więc aby zrobiło coś na styl XML:
Cytuj
Wielki goblin <word> masakruje <word> cie </word> </word>
Lecznie moge tego poskładać w logiczną całość. Teraz jak to rozwiązać? Czy przypadkiem nie nakombinowałem zbyt mocno przy banalnym problemie?


Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Khrone

  • Użytkownik

# Luty 13, 2011, 17:42:39
Stos.

Offline Frondeus

  • Użytkownik

# Luty 13, 2011, 18:10:02
Właściwie się ostro pogubiłem w tym i zaczynając od nowa natrafiłem na szybszy sposób:
-wyszukiwanie tych słów do pokolorowania.
-dodawanie ich do listy w raz z kolorem jaki maja miec.
-int i = RichTextBox.Find(word[i], RichTextBoxFinds.WholeWord)-RichTextBox.Select(i,word[i].Lenght)
Działa choć nadal mam jeden problem:
dodajac tekst tak:
RichTextBox.Text+= message;musze kolorowac za kazdym razem wszystko.
wolałbym aby dodanie tekstu nie zamazywalo kolorów.
Więc próbuję użyć tego:
RichTextBox.SelectedText += messagelecz tez nie dziala najlepiej..
« Ostatnia zmiana: Luty 13, 2011, 18:19:00 wysłana przez Frondeus »

Offline Karol

  • Użytkownik

# Luty 13, 2011, 18:18:27
Jakiś dziwny ten RichTextBox w C#. Nie ma tam jakiegoś RichTextBox.Lines.Add ?

Edit: O, jest AppendText - nie usuwa formatów, kolorów itp, w przeciwieństwie do Text.
« Ostatnia zmiana: Luty 13, 2011, 18:20:03 wysłana przez Karol »

Offline Frondeus

  • Użytkownik

# Luty 13, 2011, 18:21:12
Jest lines ale add juz nie ma.
Up: Wielkie dzięki! Wszystko działa :D
« Ostatnia zmiana: Luty 13, 2011, 18:24:27 wysłana przez Frondeus »