2

QPainterこのコードでa を使用してウィジェットを描画します。

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、特にズームインすると、線の幅が互いに異なって見えることがあります。なぜこれが起こっているのか、それを修正するために何ができるのか説明できますか?

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

ここに画像の説明を入力

4

1 に答える 1

3

これは、浮動小数点の丸めとシーンの補間/レンダリングの副作用です。ほとんどのズーム レベルでは、シーン ピクセルからビュー ピクセルへの完全な 1 対 1 の一致はありません。これは、分数のペン幅の場合に特に当てはまります。でアンチエイリアシングを有効にすると、見た目が少し滑らかになりますQGraphicsView

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

同様に渡すことができる他のレンダリングヒントがあります。

于 2012-03-19T21:58:24.587 に答える