| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Разноцветный текст в DataGridView |
| Автор: Unsane 16.2.2008, 12:24 | ||
| Необходимо было реализовать раскраску текста. Цвет определяется по "спецсимволу"(^+число от 0 до 9). Собственно раскраску реализовал, но есть баги, которые исправить не могу: 1. Неправильно считается ширина выводимого текста, всвязи с чем между 2 частями разного цвета образуется пробел. Например, "Ninzia^1DDT" отображается так , а должно быть NinziaDDT.2. Иногда при перерисовке выскакивает ошибка в 6 строке(код ниже) "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
И еще хотелось бы узнить - можно ли рисовать текст с тенью, а то белый на бежевоп не легко разглядывать( ). |
| Автор: Ctrl 16.2.2008, 15:34 | ||
| 1. Почему пробелы: когда строка рисуется целиком, отдельные буквы могут немного перекрывать друг друга (например посмотри в экранную лупуна слог "Та"). Соответственно когда ты рисуешь строку частяями надо это учитывать(см. пример - там используется самый простой метод это расчитать) 2. Для отрисовки теней рисуй строку два раза со смещением(см. пример) Ну а вот и сам пример отрисовки с правильным расчетом размера текста и тенями:
Добавлено через 5 минут и 7 секунд в примере, если внимательно посмотришь, приведен, наверное более правильный парсинг содержимого ячейки через регулярное выражение |
| Автор: Unsane 16.2.2008, 20:49 |
| Спасибо большое, а то я весь мозг сломал! |
| Автор: Ctrl 17.2.2008, 21:23 | ||||||||
Хочу поправить:
Ctrl 17.2.2008, 19:52:
Разобрался: Строчка
Ошибка в использовании \b (просто конец слова, каким может являтьс тот же символ "-") - надо явно использовать либо признак цвета ("^0" и т.п.), либо конец текста Фикс:
Unsane, спасибо за внимательность , удачи! |