Изменить исходную точку QPainter

По умолчанию QPainter имеет исходную точку в верхнем левом углу. Я хочу рисовать фигуры, но все координаты, которые у меня есть, находятся в декартовой системе. Итак, мой вопрос - как я могу изменить исходную точку на нижний левый угол? Конечно, я могу scale(1,-1), но тогда drawText() тоже масштабируется и печатает инвертированный текст. Все, что мне нужно, это просто переместить исходную точку.


person folibis    schedule 03.06.2014    source источник
comment
так сложно добавить height()-y для каждого соответствующего вызова?   -  person ratchet freak    schedule 03.06.2014
comment
Добавить это не так сложно, но, как вы понимаете, это лишняя операция, при условии, что мы можем изменить точку отсчета. Также у меня есть тысячи форм и сложных преобразований, поэтому я хочу этого избежать.   -  person folibis    schedule 03.06.2014
comment
Комбинация translate и scale является решением. Однако, как вы уже выяснили, если Painter масштабируется, текст зеркально отображается/инвертируется. Я также не нашел хорошего решения этой проблемы.   -  person bkausbk    schedule 03.06.2014


Ответы (2)


Вы можете использовать метод void QPainter::translate ( const QPointF & offset ) для изменения исходной координаты. Проверьте документы здесь.

person Maxim Makhun    schedule 03.06.2014
comment
Хорошо, спасибо, ребята! Насколько я понимаю, просто изменить точку отсчета, без масштабирования/преобразования, невозможно. Поэтому я буду использовать решение @Marek R без масштабирования, как наиболее удобное. - person folibis; 04.06.2014

person    schedule
comment
Опять же, это будет отражать/инвертировать вывод текста, что нежелательно. И перевод должен быть rect().center(), чтобы получить декартовы координаты, - person bkausbk; 03.06.2014
comment
тогда просто не используйте масштаб, а только перевод, и при выполнении рисования используйте отрицательное значение для y. - person Marek R; 03.06.2014