Dessin à la souris sur une image
Bonjour,
C'est encore moi. J'ai trouvé ce petit bout de code fort intéressant qui permet de dessiner via le curseur de la souris. Le résultat que je souhaite obtenir c'est de pouvoir dessiner par dessus une photo afin d'y mettre des annotations.
Je galère un peu avec les différents widgets (QLabel, QWidget, QGraphicsView) qui permettent ou non d'afficher une photo.
Est-ce que peux directement intégrer une photo dans mon QGraphicsView ou est-ce que je dois passer par un autre widget ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| from PyQt4 import QtGui, QtCore
import sys
class GraphicsView(QtGui.QGraphicsView):
start = None
end = None
item = None
path = None
def __init__(self, parent = None):
super(GraphicsView, self).__init__()
self.setScene(QtGui.QGraphicsScene())
self.path = QtGui.QPainterPath()
self.item = GraphicsPathItem()
self.scene().addItem(self.item)
def mousePressEvent(self, event):
self.start = self.mapToScene(event.pos())
self.path.moveTo(self.start)
def mouseMoveEvent(self, event):
self.end = self.mapToScene(event.pos())
self.path.lineTo(self.end)
self.start = self.end
self.item.setPath(self.path)
class GraphicsPathItem(QtGui.QGraphicsPathItem):
def __init__(self):
super(GraphicsPathItem, self).__init__()
pen = QtGui.QPen()
pen.setColor(QtGui.QColor("black"))
pen.setWidth(10)
self.setPen(pen)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
mw = GraphicsView()
mw.show()
sys.exit(app.exec_()) |