На этом шаге мы рассмотрим способы преобразования систем координат.
Существуют две системы координат:
При рисовании координаты из логической системы координат преобразуются в систему координат устройства. По умолчанию эти две системы координат совпадают.
В некоторых случаях возникает необходимость изменить координаты. Выполнить изменение физической системы координат позволяет метод
setViewport (<X>, <Y>, <Ширина>, <Высота>) или setViewport (<QRect>),
setWindow(<X>, <Y>, <Ширина>, <Высота>) или setWindow(<QRect>),
Произвести дополнительную трансформацию системы координат позволяют следующие методы того же класса QPainter:
translate(<X>, <Y>) translate(<QPoint>) translate(<QPointF>)
Все указанные трансформации влияют на последующие операции рисования и не изменяют ранее нарисованные фигуры. Чтобы после трансформации восстановить систему координат, следует предварительно сохранить состояние в стеке с помощью метода save(), а после окончания рисования вызвать метод restore():
painter.save() # Сохраняем состояние # Трансформируем и рисуем painter.restore() # Восстанавливаем состояние
Несколько трансформаций можно произвести последовательно друг за другом. При этом надо учитывать, что порядок следования трансформаций имеет значение.
Если одна и та же последовательность трансформаций выполняется несколько раз, то ее можно сохранить в экземпляре класса QTransform, а затем установить с помощью метода setTransform(). Пример:
transform = QtGui.QTransform() transform.translate(105, 105) transform.rotate(45.0) painter.setTransform(transform) painter.fillRect(-25, -25, 50, 50, QtCore.Qt.green)
На следующем шаге мы рассмотрим сохранение команд рисования в файл.