painterpath 可以加入闭合或不闭合的图形( 如:矩形、椭圆和曲线) 。QPainterPath 可用于填充,描边,clipping 。 使用方法: QPainterPath 一旦创建,直线和曲线都可以被添加入path ,通过lineTo(),arcTo(),cubicTo() 和 quadTo() 函数。currentPosition() 是最后一次绘制后的“结束点”(或初始点)。使用moveTo() ...
painter.setPen(Qt::blue); painter.setBrush(Qt::red); painter.drawPath(path); } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 当创建一个QPainterPath 对象后,可以使用lineTo() 、arcTo() 、cubicTo() 和quadTo() 等函数将直线或者曲线添加到路径中。运行程序,效果如下图所示。 二、复制图形 如果只...
QPainterPath 可⽤于填充,描边,clipping 。使⽤⽅法: QPainterPath ⼀旦创建,直线和曲线都可以被添加⼊path ,通过lineTo(),arcTo(),cubicTo() 和 quadTo() 函数。currentPosition() 是最后⼀次绘制后的“结束点”(或初始点)。使⽤moveTo() 移动currentPosition() ⽽不会添加任何元素。mov...
一个QPainterPath由许多基本的绘图操作组成,如绘图点移动、划线、画圆、画矩形等,一个闭合的QPainterPath是终点和起点连接起来的绘图路径 优点:绘制某些复杂形状时只需创建一个QPainterPath,然后调用QPainter::drawPath()就可以重复使用 例如:绘制一个复杂的星星图案需要多次调用lineto()函数,...
void Widget::paintEvent(QPaintEvent *) { //添加一个椭圆和一根线在图形路径里 QPainterPath path; path.addEllipse(100, 100, 50, 50); //添加一个圆心为(100,100),横纵半径都为50的椭圆 path.lineTo(200, 200); //添加一根从当前位置到(200,200)的线 ...
path.lineTo(90, 95); path.moveTo(100, 100); path.lineTo(95, 90); painter.drawPath(path); } ``` 在这个示例中,我们首先创建了一个QPainterPath对象,并使用moveTo和lineTo函数来定义路径的形状。然后,我们在路径的末端添加了两个线段,以绘制箭头的形状。最后,使用drawPath函数将路径绘制在界面上。
QPainterPath对象可以构造一个空的路径,用给定的起点,或者另一个QPainterPath对象的副本。一旦创建,可以使用lineTo()、arcTo()、cubicTo()和quadTo()函数将直线和曲线添加到路径中。直线和曲线从currentPosition()到作为参数传递的点的位置拉伸。直线和曲线从currentPosition()开始绘制。currentPosition()...
QPainterPath path; path.moveTo(p0); QPointF pTemp; for(double t=0; t<1; t+=0.01) //2次Bezier曲线 { pTemp =pow((1-t),2)*p0+2*t*(1-t)*p1+pow(t,2)*p2; path.lineTo(pTemp); } 没有使用贝塞尔曲线(三个点直接相连)画出来三角形是这样: ...
p.fillPath(path, QBrush(QColor(122,122,122))); } 底部和右边有黄色边框需要处理,这就需要+1, -1微调了。理解了arcTo函数,都不难处理。 最方便的圆角方法 voidTestArcTo::paintEvent(QPaintEvent *) { QRect rect(30,30,200,200); QPainter p(this); ...
QPainterPath 类还提供了几个方便的函数来向画笔路径添加封闭的子路径:addEllipse ()、addPath ()、addRect ()、addRegion () 和addText ()。addPolygon() 函数添加一个未闭合的子路径。其实这些函数都是moveTo ()、lineTo ()和cubicTo ()操作的集合。