首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的线宽在具有相同QPen宽度的QGraphicsScene中看起来不同?

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

Stack Overflow用户
提问于 2012-03-20 05:05:19
回答 1查看 1.9K关注 0票数 2

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

代码语言:javascript
复制
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中时,线条的宽度有时看起来彼此不同,特别是当我放大时。有谁能解释为什么会发生这种情况,以及可以做些什么来修复它?

此屏幕截图演示了该问题:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-20 05:58:25

这是浮点舍入和场景插值/渲染的副作用。在大多数缩放级别中,场景像素与视图像素之间不存在完美的一对一匹配。对于笔宽为分数的情况尤其如此。通过在QGraphicsView中启用抗锯齿功能,可以使效果看起来更平滑一些

代码语言:javascript
复制
...
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
....

也有可以传入的other rendering hints

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9777936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档