2012-03-19 11 views
1

私はこのコードで自分のウィジェットを描画するQPainterを使用します。同じQPen幅のQGraphicsSceneで私の線幅が異なって見えるのはなぜですか?

QPen pen(Qt::black, 0.6, Qt::SolidLine); 
QPainter painter(this); 
painter.setPen(pen); 

// vertical 
painter.drawLine(startX,0,startX,50); 
painter.drawLine((startX += grid),0,startX,50); 
painter.drawLine((startX += grid),0,startX,50); 
painter.drawLine((startX += grid),0,startX,50); 
painter.drawLine((startX += grid),0,startX,50); 
painter.drawLine((startX += grid),0,startX,50); 

// horizontal 
pen.setWidth(0.7); 
painter.setPen(pen); 
painter.drawLine(0,grid*2,70,grid*2); 
painter.drawLine(0,grid*4,70,grid*4); 
painter.drawLine(0,grid*6,70,grid*6); 
painter.drawLine(0,grid*8,70,grid*8); 

私はQGraphicsSceneにこのアイテムを追加すると、線の幅は、時々私は、ズームインする場合は特に、互いに異なって見えることができます誰でも。なぜこれが起こっているのか、それを修正するために何ができるのか説明してください。

このスクリーンショットは、問題を示しています

enter image description here

+0

あなたの編集のおかげで@Arnold Spence – nils

答えて

2

これは、浮動小数点の丸めとシーン補間​​/レンダリングの副作用です。ほとんどのズームレベルでは、シーンピクセルからビューピクセルへの完全な1対1のマッチングはありません。これは、分数ペンの幅に特に当てはまります。

... 
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); 
.... 

同様に渡すことができるother rendering hintsがあります:あなたは物事があなたのQGraphicsViewでアンチエイリアシングをオンにして少し滑らかに見えるようにすることができます。

+0

ありがとう、それははるかに良く見えます。ラインのエッジはあまりシャープではなく、少しぼやけています。私の問題はQGraphicsPixelItemにも起こります。写真の品質はかなり低下します。時にはラインが消えてしまいます。いくつかの画像ビューアを使用して画像を拡大/縮小するときには、この現象は観察されません。 – nils

+0

'QGraphicsPixmapItem'を意味するなら、レンダリングのヒントもあります。私は上記の私の答えにそれを追加しました。 –

関連する問題