Russian Qt Forum
Ноябрь 24, 2024, 18:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как сделать подложку текста ?  (Прочитано 11542 раз)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #15 : Апрель 05, 2013, 16:00 »

А кто мешает просто посмотреть описание QPainterPath::addText() Непонимающий
Записан

Qt 5.11/4.8.7 (X11/Win)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #16 : Апрель 05, 2013, 16:17 »

_OLEGator_, неа Улыбающийся
Записан
_OLEGator_
Гость
« Ответ #17 : Апрель 05, 2013, 19:58 »

to GreatSnake
Это не совсем то, что нужно ТС. Как я понял, необходимо что-то вроде фильтра Outline в фотошопе.

Оно?
Код
C++ (Qt)
QPainter painter(this);
 
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::TextAntialiasing);
painter.translate(50, 80);
 
QPainterPath path;
path.addText(0, 0, QFont("", 20), "Test");
 
painter.setPen(QPen(Qt::gray, 5));
painter.translate(0, 1);
painter.drawPath(path);
painter.translate(0, -1);
 
painter.setPen(QPen(Qt::white, 5));
painter.drawPath(path);
 
painter.fillPath(path, Qt::red);
« Последнее редактирование: Апрель 06, 2013, 10:46 от _OLEGator_ » Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #18 : Апрель 19, 2013, 08:13 »

Случайно эту тему заметил Улыбающийся _OLEGator_, твой вариант вроде тоже рабочий, я там выше выкладывал рабочий пример. Так же понял почему в qml текст отрисовывают через QPixmap ,а не через QPainterPath, это связанно с тем что QPainterPath не умеет рисовать переносы на следующую строку.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #19 : Апрель 19, 2013, 09:25 »

Так же понял почему в qml текст отрисовывают через QPixmap ,а не через QPainterPath, это связанно с тем что QPainterPath не умеет рисовать переносы на следующую строку.
Т.е. QPixmap делает переносы Непонимающий Интересное умозаключение.
Записан

Qt 5.11/4.8.7 (X11/Win)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #20 : Апрель 19, 2013, 13:25 »

Причем тут это  Непонимающий Ты же на QPixmap рисуешь через QPainter, стало быть перенос скорее всего QPainter делает. А QPainterPath насколько понимаю что то вроде вектора, когда ты в него добавляешь что то по ходу он хранит у себя данные о том что нужно отрисовать, стало быть в случае с добавлением текста он его переносить должен. Вот что я хотел сказать:

Если рисуешь текст вот так

Код:
QPainter::drawText(QRect(),"Qt\ndigia");

то с переносами на новую строку проблем не будет
а если добавлять в QPainterPath то текст не будет переноситься на новую строку.  Но для того что бы сделать обводку и прочие плюшки в qml например используют для этого QPixmap, выше пример уже есть как они это делают.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 23.