Мне нужно нарисовать фигуру с масштабированием и Qwheel event
. Я пробовал painter.scale
и painter.translate
, но это никак не влияет на масштабирование фигуры.
Идея состоит в том, чтобы рисовать различные фигуры, например, эту на на рисунке ниже , прямоугольную форму с начальным значением (200, 300) выглядит идеально и даже с центром в canvas widget
. но когда с большим значением (500, 700) , как показано на секунду ниже, цифра увеличивается и становится нежелательной. Я хочу нарисовать его с масштабом и со способностью к колесу (увеличение и уменьшение) это с mouse event
.
Визуализация.
Код:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Foo(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Foo, self).__init__(parent)
self.setGeometry(QtCore.QRect(200, 100, 700, 600))
self.paint = Paint()
self.sizeHint()
self.lay = QtWidgets.QVBoxLayout()
self.lay.addWidget(self.paint)
self.setLayout(self.lay)
class Paint(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Paint, self).__init__(parent)
self.setBackgroundRole(QtGui.QPalette.Base)
self.setAutoFillBackground(True)
self._width = 200
self._height = 300
def paintEvent(self, event):
pen = QtGui.QPen()
brush = QtGui.QBrush( QtCore.Qt.darkCyan, QtCore.Qt.Dense5Pattern)
painter = QtGui.QPainter(self)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setPen(pen)
painter.setBrush(brush)
r = QtCore.QRect(QtCore.QPoint((self.width() - self._width)/ 2, (self.height() -self._height)/ 2), QtCore.QSize(self._width, self._height))
painter.drawRect(r)
painter.scale(0.4,0.4)
painter.translate(50, 50)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Foo()
w.show()
sys.exit(app.exec_())
Я ценю любую помощь. Спасибо