为什么我的线宽在具有相同QPen宽度的QGraphicsScene中看起来不同?

时间:2012-03-19 21:05:19

标签: qt qgraphicsview qpainter qgraphicsscene

我使用QPainter使用以下代码绘制我的小部件:

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

1 个答案:

答案 0 :(得分:2)

这是浮点舍入和场景插值/渲染的副作用。在大多数缩放级别,从场景像素到视图像素都不会有完美的一对一匹配。对于小数笔宽度尤其如此。通过在QGraphicsView

中启用消除锯齿功能,您可以使事情看起来更平滑
...
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
....

还可以传入other rendering hints