У меня есть прямоугольное изображение (т. Е. 1280 x 1024), которое мне нужно вращать вокруг его центральной точки, а затем переводить в заданную точку.Повернуть + перевод?
В методе виджет paintEvent, это то, что я делаю:
def paintEvent(self, event):
# self._center are the coordinates where I want to set the rotated image's center.
t = QtGui.QTransform()
s = self._pm.size() # self._pm is the image to rotate.
t.translate(s.width()/2, s.height()/2)
t.rotate(self._degrees)
t.translate(-s.width()/2, -s.height()/2)
# now my image is properly rotated. Now I need to translate it to the final
# coordinates.
t.translate (self._center.x, self._center.y)
p = QtGui.QPainter(self)
p.setTransform(t)
p.drawPixmap(0, 0, self._pm)
p.end()
И это нормально с вращением. Проблема заключается в том, что я не могу найти способ, чтобы показать мое изображение с новым центром, он работает только тогда, когда self._degrees
является 0.
Если я применить другой translate
к объекту QTransform и self._degrees
не 0, то изображение никогда в центре, где бы я ожидал.
Может ли кто-нибудь указать мне в правильном направлении, пожалуйста?
Редактировать
PS: Я забыл упомянуть, что новый центр координатных основаны на координатах исходного изображения, а не на том, повернутые изображениях.
объяснить: «е применяю другой перевод к объекту QTransform и сам. _degrees не равно 0, изображение никогда не будет сосредоточено там, где я ожидаю, что это будет ». Я предполагаю, что вы примените это преобразование в ближайшее время. Показать код с проблемной трансформацией. –
@MarekR спасибо, см. Мое последнее редактирование. – Simone