【发布时间】:2014-04-03 16:02:08
【问题描述】:
我是 Qt 新手,使用 QPainterPath 绘制弧线时遇到问题。当我画它的时候,它也在矩形的一端画了一条线。为什么它画了一些线?
这是我的代码:
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 );
我打算画这样的东西:
代码:
// 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(...)?
【问题讨论】: