首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPainterPath喷漆弧

QPainterPath喷漆弧
EN

Stack Overflow用户
提问于 2014-04-02 21:12:03
回答 1查看 1.1K关注 0票数 2

我是Qt的新手,我在用QPainterPath绘制弧线时遇到了问题。当我画它的时候,它也把一条线画到rectangular.Why的某个末端--它是画一些线吗?

这是我的密码:

代码语言:javascript
复制
QRectF rect( m_height / 2 - 100.0 / 2, m_width / 2 - 100.0 / 2, 100.0, 100.0 );
path.moveTo( m_width / 2, m_height / 2 );
path.arcTo( rect, 90, - 180 );
QPainter painter( this );
painter.drawPath( path );

我正打算画这样的画:

编码如下:

代码语言:javascript
复制
// figure coords
    QRectF rectangle1( m_x * m_scale, m_y * m_scale, m_width * m_scale, m_height * m_scale );
int startAngle1 = 90 * 16 ;
int spanAngle1 = 180 * 16;

path.arcTo( rectangle1, startAngle1, spanAngle1 );

QRectF rectangle2( ( m_x + 170.0 ) * m_scale, m_y * m_scale, m_width * m_scale, m_height * m_scale );
int startAngle2 = 90 * 16;
int spanAngle2 = -180 * 16;

path.arcTo( rectangle2, startAngle2, spanAngle2 );

QLine line1( ( m_x + 125.0 ) * m_scale, m_y * m_scale, ( m_x + 295.0 ) * m_scale, m_y * m_scale );
QLine line2( ( m_x + 125.0 ) * m_scale, ( m_y + 250.0) * m_scale, ( m_x + 295.0 ) * m_scale,
             ( m_y + 250.0) * m_scale );



// paint figure

QPainter painter(this);
painter.drawArc(rectangle1, startAngle1, spanAngle1);
painter.drawArc(rectangle2, startAngle2, spanAngle2);
painter.drawLine( line1 );
painter.drawLine( line2 );

我为什么使用QPainterPath?因为你可以很容易地用颜色填充它,这是我以后需要的,当我想要填充颜色第二张图片时,你需要计算颜色的像素(或者我不知道什么)。所以问题是,当我使用path.arcto(.)的时候,为什么这条线也是画出来的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-03 07:58:35

你让事情变得太复杂了。有一个方法drawRoundedRect,它将完成这项工作。

代码语言:javascript
复制
QPainter painter(this);
QRect r(internalPartOfRect.adjusted(-r.height()/2, 0, r.height()/2, 0));
painter.setPen(palette().color(QPalette::Normal, QPalette::WindowText));
painter.drawRoundedRect(r, r.height()/2);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22823153

复制
相关文章

相似问题

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