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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Текст под углом  (Прочитано 6926 раз)
svictor
Гость
« : Март 13, 2006, 16:43 »

Qt 4.1 Задача нарисовать много различных текстов под разными углами.
Делаю это в цикле:

           painter.translate(x,y);
           painter.rotate(angle);
           painter.drawText(0,0,QString::fromAscii(Text));
           painter.resetMatrix();

где x,y - координаты текста,
      angle - угол поворота
     Text - сам текст, считанный из файла (массив чаров)
     
Все рисуется как надо, но очень долго. В винде подобная задача работает разов в пять быстрее. В чем проблемма? Может что-то не так с драйверами на карту. Может есть другой, более быстрый способ отрисовки?
Записан
QCasper
Гость
« Ответ #1 : Март 14, 2006, 13:59 »

у меня в линуксе все что связано с QPainter это большая тормозная жопа, простите, на винде все летает. Qt 4.1.1 и там  и там
Записан
Dendy
Гость
« Ответ #2 : Март 14, 2006, 14:42 »

QPainter малюет с лихой скоростью. Попробуй поиграться с антиалиасингом, настройками кисти QPen, типами смешения цветов QPainter::CompositionMode.

Сходу скажу (смотрел код и тестил), что операции рисования любьІх елементов без трансформации матрицьІ вьІполняются раза в полтора бьІстрее, чем с трансформацией. Посему, если вся композиция из большого колличества елементов подвергается одной и той же трансформации, то можно оптимизировать: рисовать без трансформации на QPixmap, а потом последнюю с трансформацией нарисовать на результирующем окне.
Записан
svictor
Гость
« Ответ #3 : Март 16, 2006, 09:32 »

К сожалению без трансформации ни как не обойтись - текст надо рисовать на QPixmap в разных местах под разными углами. Другого способа я не нашел. Пробывал играться и с QPainter::CompositionMode - ничего не помогает. Может есть низкоуровневый способ вывода текста?
Записан
Steven_Orko
Гость
« Ответ #4 : Март 16, 2006, 10:17 »

Цитата: "QCasper"
у меня в линуксе все что связано с QPainter это большая тормозная жопа, простите, на винде все летает. Qt 4.1.1 и там  и там


Если ты используешь Qt 4.1.1, то значит, наверняка у тебя в $QTDIR/bin есть такая прога, как qtdemo. Я про Линукс вариант... но это не важно, впрочем... Как только я ее запускаю, все начинает тормозить жутко...Но потом выскакивает окошко, которое просит включить XRender, кажется... после этого все сразу бегать начинает в этом приложении... Может тебе имеет смысл посмотреть его исходный код? В Assistant есть целая статья на эту тему... Адрес не скажу, т.к. на хубок не помню, а Assistantсейчас нет под рукой.
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #5 : Март 16, 2006, 11:04 »

Цитата: "Steven_Orko"
Цитата: "QCasper"
у меня в линуксе все что связано с QPainter это большая тормозная жопа, простите, на винде все летает. Qt 4.1.1 и там  и там


Если ты используешь Qt 4.1.1, то значит, наверняка у тебя в $QTDIR/bin есть такая прога, как qtdemo. Я про Линукс вариант... но это не важно, впрочем... Как только я ее запускаю, все начинает тормозить жутко...Но потом выскакивает окошко, которое просит включить XRender, кажется... после этого все сразу бегать начинает в этом приложении... Может тебе имеет смысл посмотреть его исходный код? В Assistant есть целая статья на эту тему... Адрес не скажу, т.к. на хубок не помню, а Assistantсейчас нет под рукой.


Должен сказать, что на Mac x86 летает и не тормозит... даже на intel 945(встроенная)
...
хотя под Linux на GF6600 работатеощутимо медленнее... видно по производительность X11 явно отстаёт...
Записан
svictor
Гость
« Ответ #6 : Март 17, 2006, 07:31 »

Скачал Qt 4.1.1 - проверил, стало работать ощутимо быстрее (до этого был Qt 4.1.0). Но все равно медленнее, чем хотелось. А вот окошко, которое просит включить XRender не выскочило и в Assistant ничего не нашел. Странно...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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