Ich habe ein QGraphicsView/QGraphicsScene-Paar. Ich habe die Methode QGraphicsView.drawBackgroud überschrieben, um ein rechteckiges Raster zu zeichnen. Alles ist in Ordnung bis zu diesem Punkt, aber wenn ich versuche, die tatsächlichen Koordinaten mit der QPainter.drawText-Methode zu zeichnen, steht der resultierende Text auf dem Kopf. Ein anderes Problem ist, dass ich nicht möchte, dass der Text für Koordinatenwerte mit Zoomen skaliert, aber ich konnte das nicht erreichen.qpainter drawText Textrichtung und -größe
Meine Ansicht ist zunächst skaliert (1, -1).
Ich arbeite an pyside
Dies ist mein Code für DrawBackground:
pen = QtGui.QPen(QtGui.QColor(0,0,0))
painter.setPen(pen)
gridInterval = 10
#painter.setWorldMatrixEnabled(True)
l, r = rect.left(), rect.right()
t, b = rect.bottom(), rect.top()
dx = (r - l)/gridInterval
dy = (t - b)/gridInterval
left = int(l) + dx/2
bottom = int(b) + dy/2
nx = gridInterval
ny = gridInterval
dx = (r - l)/gridInterval
dy = (t - b)/gridInterval
myxrange = [left + i * dx for i in range(nx)]
myyrange = [bottom + j * dy for j in range(ny)]
xlabels = ["{0:.2f}".format(x) for x in myxrange]
ylabels = ["{0:.2f}".format(y) for y in myyrange]
xlines = []
for point in myxrange:
line = QtCore.QLineF(point, t, point, b)
xlines.append(line)
ylines = []
for point in myyrange:
line = QtCore.QLineF(l, point, r, point)
ylines.append(line)
painter.drawLines(xlines)
painter.drawLines(ylines)
#font = QtGui.QFont()
#font.setPointSize(20)
#painter.setFont(font)
for k, text in enumerate(xlabels):
#painter.save()
#painter.rotate(90)
painter.drawText(myxrange[k], myyrange[0], text)
#painter.rotate(-90)
#painter.restore()