0
我有一個QGraphicsView/QGraphicsScene對。我已經重寫了QGraphicsView.drawBackgroud方法以繪製一個矩形網格。一切都很好,直到這一點,但是當我嘗試繪製實際的座標,使用QPainter.drawText方法,結果文本是顛倒的。另一個問題是,我不希望座標值的文本調整大小與縮放,但我還沒有能夠實現這一點。qpainter drawText文本方向和大小
我的視圖初始縮放(1,-1)。
我的工作PySide
這是我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()