2017-07-03 50 views
0

私はQGraphicsView/QGraphicsSceneのペアを持っています。私は長方形のグリッドを描画するためにQGraphicsView.drawBackgroudメソッドをオーバーライドしました。その時点まではすべて問題ありませんが、QPainter.drawTextメソッドを使用して実際の座標を描画しようとすると、結果のテキストは上下が逆です。もう一つの問題は、座標値のテキストがズームでサイズ変更されるのをやめたいのですが、これを達成することはできませんでした。qpainter drawTextテキストの方向とサイズ

私のビューは最初に拡大(1、-1)されます。

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() 

答えて

0

[OK]をので、私は "回転" テキストのために働く解決策を見つけた:私はPySide

に取り組んでいます

これはdrawBackgroundのための私のコードです。

だから、このforループのようになります:

for k, text in enumerate(xlabels): 
    painter.save() 
    painter.scale(1,-1) 
    painter.drawText(myxrange[k], -myyrange[0], text) 
    painter.restore() 

私はまだ固定サイズへの答えを探しています私は、テキストを描画する前に画家を再スケールし、実際に翻訳された場所でそれを描画しなければなりませんでした問題。

関連する問題