По умолчанию QPainter
имеет исходную точку в верхнем левом углу. Я хочу рисовать фигуры, но все координаты, которые у меня есть, находятся в декартовой системе. Итак, мой вопрос - как я могу изменить исходную точку на нижний левый угол? Конечно, я могу scale(1,-1)
, но тогда drawText()
тоже масштабируется и печатает инвертированный текст. Все, что мне нужно, это просто переместить исходную точку.
Изменить исходную точку QPainter
Ответы (2)
Вы можете использовать метод void QPainter::translate ( const QPointF & offset )
для изменения исходной координаты. Проверьте документы здесь.
person
Maxim Makhun
schedule
03.06.2014
Хорошо, спасибо, ребята! Насколько я понимаю, просто изменить точку отсчета, без масштабирования/преобразования, невозможно. Поэтому я буду использовать решение @Marek R без масштабирования, как наиболее удобное.
- person folibis; 04.06.2014
person
schedule
Опять же, это будет отражать/инвертировать вывод текста, что нежелательно. И перевод должен быть
rect().center()
, чтобы получить декартовы координаты,
- person bkausbk; 03.06.2014
тогда просто не используйте масштаб, а только перевод, и при выполнении рисования используйте отрицательное значение для
y
.
- person Marek R; 03.06.2014
height()-y
для каждого соответствующего вызова? - person ratchet freak   schedule 03.06.2014translate
иscale
является решением. Однако, как вы уже выяснили, если Painter масштабируется, текст зеркально отображается/инвертируется. Я также не нашел хорошего решения этой проблемы. - person bkausbk   schedule 03.06.2014