Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: svictor от Март 13, 2006, 16:43



Название: Текст под углом
Отправлено: 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 от Март 14, 2006, 13:59
у меня в линуксе все что связано с QPainter это большая тормозная жопа, простите, на винде все летает. Qt 4.1.1 и там  и там


Название: Текст под углом
Отправлено: Dendy от Март 14, 2006, 14:42
QPainter малюет с лихой скоростью. Попробуй поиграться с антиалиасингом, настройками кисти QPen, типами смешения цветов QPainter::CompositionMode.

Сходу скажу (смотрел код и тестил), что операции рисования любьІх елементов без трансформации матрицьІ вьІполняются раза в полтора бьІстрее, чем с трансформацией. Посему, если вся композиция из большого колличества елементов подвергается одной и той же трансформации, то можно оптимизировать: рисовать без трансформации на QPixmap, а потом последнюю с трансформацией нарисовать на результирующем окне.


Название: Текст под углом
Отправлено: svictor от Март 16, 2006, 09:32
К сожалению без трансформации ни как не обойтись - текст надо рисовать на QPixmap в разных местах под разными углами. Другого способа я не нашел. Пробывал играться и с QPainter::CompositionMode - ничего не помогает. Может есть низкоуровневый способ вывода текста?


Название: Текст под углом
Отправлено: Steven_Orko от Март 16, 2006, 10:17
Цитата: "QCasper"
у меня в линуксе все что связано с QPainter это большая тормозная жопа, простите, на винде все летает. Qt 4.1.1 и там  и там


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


Название: Текст под углом
Отправлено: Sergey B. от Март 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 от Март 17, 2006, 07:31
Скачал Qt 4.1.1 - проверил, стало работать ощутимо быстрее (до этого был Qt 4.1.0). Но все равно медленнее, чем хотелось. А вот окошко, которое просит включить XRender не выскочило и в Assistant ничего не нашел. Странно...