Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QPainterPath类提供一个容器,用于绘制操作,从而能够构造和重用的图形形状。More...
该QPainterPath类提供一个容器,用于绘制操作,从而能够构造和重用的图形形状。
一个画家路径是大量的图形积木,如矩形,椭圆,直线和曲线组成的对象。积木可以在封闭的子路径被接合,例如为矩形或椭圆形。一个封闭的路径已重合的起点和终点。或者,他们可以独立存在的未封闭的子路径,如直线和曲线。
一个QPainterPath对象可用于填充,概述,和削波。要生成可填写概括为一个给定的画家路径,使用QPainterPathStroker类。画家路径超过正常的绘图操作的主要优点是,复杂的形状只需要创建一次,然后就可以使用绘制多次调用只对QPainter.drawPath()函数。
QPainterPath提供了可用于获得关于路径和它的元素的信息的功能的集合。此外,可以利用扭转元素的顺序的toReversed()函数。还有一些功能,这个画家路径对象转换为多边形表示。
甲QPainterPath对象可以被构造为一个空的路径,与给定的起始点,或者作为另一个QPainterPath对象的一个副本。一旦创建,直线和曲线可以使用被添加到路径的lineTo( )arcTo( )cubicTo()和quadTo()函数。在直线和曲线舒展从currentPosition()来作为参数传递的位置。
该currentPosition该QPainterPath对象的( )始终是添加的最后一个子路径(或初始起点)的结束位置。使用moveTo( )函数来移动currentPosition()无添加的成分。该moveTo()函数,隐启动一个新的子路径,并且关闭前一个。开始一个新的子路径的另一种方式是调用closeSubpath( )函数,它通过从添加一行关闭当前路径currentPosition( )返回路径的起始位置。请注意,新的路径不会有(0,0 ),作为其初始currentPosition( ) 。
QPainterPath类还提供了一些方便的功能来封闭的子路径添加到一个画家路径:addEllipse( )addPath( )addRect( )addRegion()和addText( ) 。该addPolygon( )函数添加unclosed子路径。事实上,这些功能是所有集合moveTo( )lineTo()和cubicTo( )操作。
此外,一个路径可以使用被添加到当前路径connectPath()函数。但要注意,这个函数将在当前路径的最后一个元素连接到给定的一个的第一个元素添加一行。
下面是一个代码片段显示了如何QPainterPath对象可用于:
QPainterPath path; path.addRect(20, 20, 60, 60); path.moveTo(0, 0); path.cubicTo(99, 0, 50, 50, 99, 99); path.cubicTo(0, 99, 50, 50, 0, 0); QPainter painter(this); painter.fillRect(0, 0, 100, 100, Qt.white); painter.setPen(QPen(QColor(79, 106, 25), 1, Qt.SolidLine, Qt.FlatCap, Qt.MiterJoin)); painter.setBrush(QColor(122, 163, 39)); painter.drawPath(path); |
当构建画家路径最初是空的。我们首先添加一个矩形,这是一个封闭的子路径。然后,我们添加两个贝兹曲线共同构成,即使他们不是单独关闭一个封闭的子路径。最后,我们绘制整个路径。该路径是使用默认的填充规则填充,Qt.OddEvenFill。 Qt提供了两种方法来填充路径:
Qt.OddEvenFill | Qt.WindingFill |
---|---|
请参阅Qt.FillRule文档规则的定义。一个画家路径的当前设置填充规则可使用检索到的fillRule()函数,并使用改变了setFillRule()函数。
该QPainterPath类提供的功能的集合,它返回的路径及其元素的信息。
该currentPosition( )函数返回已添加的最后一个子路径(或初始起点)的终点。该elementAt()函数可以被用于检索各个子路径元素,则number元素可使用检索到的elementCount()函数,并且isEmpty( )函数告诉这个QPainterPath对象是否包含在所有的任何元素。
该controlPointRect( )函数返回一个包含此路径的所有点和控制点的矩形。这个功能是显着更快的计算比精确boundingRect( )返回这个画家路径的边界矩形与浮点精度。
最后, QPainterPath提供contains()函数可以被用来确定一个给定的点或矩形是否是路径内,并且intersects( )函数,它确定是否任何一个给定的矩形内的点也都是这个路径里。
由于兼容性的原因,它可能需要简化画家路径的表示: QPainterPath提供toFillPolygon( )toFillPolygons()和toSubpathPolygons( )函数的转换画家路径转换为多边形。该toFillPolygon( )返回画家路径作为一个单独的多边形,而后面两个函数返回的多边形列表。
该toFillPolygons()和toSubpathPolygons提供()函数,因为它通常是更快地绘制几个小的多边形,而不是绘制一个大的多边形,即使点绘制的总数是相同的。两者之间的区别是number多边形他们返回:该toSubpathPolygons( )创建一个多边形的每个子路径,无论相交的子路径(即重叠边界矩形) ,而toFillPolygons( )函数只创建一个重叠的子路径多边形。
该toFillPolygon()和toFillPolygons( )函数首先将所有的子路径为多边形,然后使用倒带技术,以确保重叠的子路径可以使用正确的填充规则来填补。注意,倒带插入附加行中的多边形,以便填充多边形的轮廓并不路径的轮廓相匹配。
Qt提供了Painter Paths Example和Vector Deformation Demo分别位于Qt的例子和演示目录分别。
该Painter Paths Example显示了画家的路径如何可以用来构建复杂的形状进行渲染,并让用户实验用的填充和描边。该Vector Deformation Demo展示了如何使用QPainterPath绘制文本。
Painter Paths Example | Vector Deformation Demo |
---|---|
该枚举描述了用于连接的顶点中的子路径元素的类型。
需要注意的是元素的加入为封闭的子路径使用addEllipse( )addPath( )addPolygon( )addRect( )addRegion()和addText( )的便利功能,采用实际添加到路径作为单独的元素的集合moveTo( )lineTo()和cubicTo()函数。
Constant | Value | Description |
---|---|---|
QPainterPath.MoveToElement | 0 | 一个新的子路径。另请参阅moveTo( ) 。 |
QPainterPath.LineToElement | 1 | A线。另请参阅lineTo( ) 。 |
QPainterPath.CurveToElement | 2 | 曲线。另请参阅cubicTo()和quadTo( ) 。 |
QPainterPath.CurveToDataElement | 3 | 描述曲线在CurveToElement元素所需的额外数据。 |
See also elementAt()和elementCount( ) 。
构造一个空QPainterPath对象。
创建QPainterPath与给定对象startPoint作为它的当前位置。
创建QPainterPath对象,它是给定一个副本path。
See also operator=( ) 。
建立内指定的椭圆boundingRectangle并把它添加到画家路径作为一个封闭的子路径。
椭圆是由顺时针曲线,并开始在零摄氏度整理( 3点钟位置) 。
QLinearGradient myGradient; QPen myPen; QRectF boundingRectangle; QPainterPath myPath; myPath.addEllipse(boundingRectangle); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
See also arcTo( )QPainter.drawEllipse()和Composing a QPainterPath。
这是一个重载函数。
建立由它左上角的定义矩形边界内的椭圆形(x,y) ,width和height,并将其添加到画家路径作为一个封闭的子路径。
这是一个重载函数。
创建放置在一个椭圆center与半径rx和ry,并将其添加到画家路径作为一个封闭的子路径。
此功能被引入Qt的4.4 。
将给定path至this路径作为一个封闭的子路径。
See also connectPath()和Composing a QPainterPath。
将给定polygon该路径作为(未关闭)子路径。
注意,该多边形后的当前位置已被添加,是在最后一个点polygon。画一条线回到第一点,用closeSubpath()函数。
QLinearGradient myGradient; QPen myPen; QPolygonF myPolygon; QPainterPath myPath; myPath.addPolygon(myPolygon); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
See also lineTo()和Composing a QPainterPath。
将给定rectangle这条道路是一个封闭的子路径。
该rectangle添加为顺时针套系。后画家路径的当前位置rectangle已经被添加为矩形的左上角。
QLinearGradient myGradient; QPen myPen; QRectF myRectangle; QPainterPath myPath; myPath.addRect(myRectangle); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
See also addRegion( )lineTo()和Composing a QPainterPath。
这是一个重载函数。
添加一个矩形的位置(x,y) ,使用给定的width和height作为一个封闭的子路径。
将给定region通过增加该区域的每个矩形作为一个单独的封闭的子路径的路径。
See also addRect()和Composing a QPainterPath。
将指定的矩形rect带圆角的路径。
该xRadius和yRadius参数指定限定的圆角矩形的角部的椭圆形的半径。何时mode is Qt.RelativeSize,xRadius和yRadius在一半的矩形的宽度和高度的比例分别指定,并应在范围0.0至100.0 。
此功能被引入Qt的4.4 。
See also addRect( ) 。
这是一个重载函数。
将指定的矩形x,y,w,h带圆角的路径。
此功能被引入Qt的4.4 。
将给定text这个路径作为一组从已建立封闭的子路径font提供。该子路径定位,使文本的基线的左端在于在指定的point。
QLinearGradient myGradient; QPen myPen; QFont myFont; QPointF baseline(x, y); QPainterPath myPath; myPath.addText(baseline, myFont, tr("Qt")); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
See also QPainter.drawText()和Composing a QPainterPath。
这是一个重载函数。
将给定text这个路径作为一组从已建立封闭的子路径font提供。该子路径定位,使文本的基线的左端处在于通过指定的点(x,y) 。
返回的路径切线角度的百分比t。这个论点t必须是0和1之间。
用于角度的正值逆时针意思而负值意味着顺时针方向。零度是在3点钟的位置。
注意,类似于其它百分比的方法,该百分比的测量是不与问候的长度呈线性的曲线,如果是存在于路径。当曲线存在的比例的参数被映射到吨贝塞尔方程的参数。
创建一个举动是在于佔用给定弧rectangle在angle。
角度单位是度。顺时针圆弧可以用负角度被指定。
这个函数中引入了Qt 4.2中。
这是一个重载函数。
创建一个移动到躺在床上,佔据了弧线QRectF(x,y,width,height)在angle。
这个函数中引入了Qt 4.2中。
创建圆弧佔用给定的rectangle,开始于指定的startAngle并延伸sweepLength逆时针旋转度。
角度单位是度。顺时针圆弧可以用负角度被指定。
注意,这个函数圆弧的起点连接到当前的位置,如果它们尚未连接。之后电弧已经被添加,当前位置是在电弧的最后一点。画一条线回到第一点,用closeSubpath()函数。
QLinearGradient myGradient; QPen myPen; QPointF center, startPoint; QPainterPath myPath; myPath.moveTo(center); myPath.arcTo(boundingRect, startAngle, sweepLength); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
See also arcMoveTo( )addEllipse( )QPainter.drawArc( )QPainter.drawPie()和Composing a QPainterPath。
这是一个重载函数。
创建圆弧佔据的矩形QRectF(x,y,width,height) ,开始于指定的startAngle并延伸sweepLength逆时针旋转度。
返回与浮点精度的矩形这个画家路径的边框。
See also controlPointRect( ) 。
通过画线的子路径的开始,自动启动一个新的路径关闭当前子路径。新路径的当前点为( 0,0) 。
如果子路径不包含任何元素,该函数不起作用。
See also moveTo()和Composing a QPainterPath。
连接指定的path至this通过添加从该路径的最后一个元素的线为给定路径的第一个元素的路径。
See also addPath()和Composing a QPainterPath。
返回True如果给定的point是的路径里面,否则返回False 。
See also intersects( ) 。
返回True如果给定的rectangle是的路径里面,否则返回False 。
返回True如果给定的路径p包含在当前路径内。返回False如果当前路径以及任何边缘p相交。
设置路径的操作将视路径,领域。非闭合路径将被隐式关闭处理。
此功能被引入Qt的4.3 。
See also intersects( ) 。
返回包含此路径的所有点和控制点的矩形。
这个功能是显着更快的计算比精确boundingRect() ,并返回的矩形总是返回的矩形的一个超boundingRect( ) 。
See also boundingRect( ) 。
将当前位置与给定之间的三次贝塞尔曲线endPoint通过使用指定的控制点c1和c2。
该曲线被加入后,当前位置被更新为在该曲线的终点。
QLinearGradient myGradient; QPen myPen; QPainterPath myPath; myPath.cubicTo(c1, c2, endPoint); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
See also quadTo()和Composing a QPainterPath。
这是一个重载函数。
将当前位置和结束点之间的三次Bezier曲线(endPointX,endPointY)与管制站(指定c1X,c1Y)和(c2X,c2Y) 。
返回路径的当前位置。
返回元素在给定的index在画家的路径。
See also ElementType,elementCount()和isEmpty( ) 。
返回在画家路径路径的元素数。
See also ElementType,elementAt()和isEmpty( ) 。
返回画家路径的当前设置填充规则。
See also setFillRule( ) 。
返回作为此路径的填充区域的交叉点和路径p的填充区域。贝塞尔曲线可压扁排队,由于做贝塞尔曲线交点的数值不稳定段。
此功能被引入Qt的4.3 。
返回True如果在给定的任何一点rectangle相交的路径,否则返回False 。
有一个交叉点,如果任何组成矩形的线条相交的路径的一部分,或者如果任何部分的矩形的带路径包围的任何区域重叠。这个函数尊重当前fillRule以确定被认为是路径之内。
See also contains( ) 。
如果当前路径相交在任何点给定的路径,则返回Truep。如果当前路径包含或被包含的任何部分也返回Truep。
设置路径的操作将视路径,领域。非闭合路径将被隐式关闭处理。
此功能被引入Qt的4.3 。
See also contains( ) 。
如果不是有这个路径没有任何元素,则返回True,如果只有元素是MoveToElement否则返回False 。
See also elementCount( ) 。
返回电流路径的长度。
添加一条直线从当前位置到指定endPoint。后绘制的线,当前位置被更新为在该行的终点。
See also addPolygon( )addRect()和Composing a QPainterPath。
这是一个重载函数。
绘制一条线从当前位置至点(x,y) 。
移动当前点到给定point,隐式地开始一个新的子路径和关闭前一个。
See also closeSubpath()和Composing a QPainterPath。
这是一个重载函数。
将当前位置移动到(x,y),并开始一个新的子路径,隐含收盘前一路径。
返回整个路径的百分比在规定的长度len。
注意,类似于其它百分比的方法,该百分比的测量是不与问候的长度呈线性,如果曲线中存在的路径。当曲线存在的比例的参数被映射到吨贝塞尔方程的参数。
返回点的百分比t的电流通路的。这个论点t必须是0和1之间。
注意,类似于其它百分比的方法,该百分比的测量是不与问候的长度呈线性,如果曲线中存在的路径。当曲线存在的比例的参数被映射到吨贝塞尔方程的参数。
将当前位置和给定的二次贝塞尔曲线endPoint由指定的控制点c。
该曲线被加入后,当前点被更新为在该曲线的终点。
See also cubicTo()和Composing a QPainterPath。
这是一个重载函数。
将目前的点和终点之间的二次贝塞尔曲线(endPointX,endPointY)与(指定控制点cx,cy) 。
元素的索引设置x和y坐标index至x和y。
这个函数中引入了Qt 4.2中。
设定画家路径的填充规则给定的fillRule。 Qt提供了两种方法来填充路径:
Qt.OddEvenFill (default) | Qt.WindingFill |
---|---|
See also fillRule( ) 。
返回此路径的简化版本。这意味着合并相交的所有子路径,并返回包含任何相交的边缘的路径。连续的平行线也将被合并。简化的路径将始终使用默认的填充规则,Qt.OddEvenFill。贝塞尔曲线可压扁排队,由于做贝塞尔曲线交点的数值不稳定段。
此功能被引入Qt的4.4 。
返回路径的斜率的百分比t。这个论点t必须是0和1之间。
注意,类似于其它百分比的方法,该百分比的测量是不与问候的长度呈线性,如果曲线中存在的路径。当曲线存在的比例的参数被映射到吨贝塞尔方程的参数。
返回这是一个路径p的填充区域由这条路径的填充区域中减去。
设置路径的操作将视路径,领域。非闭合路径将被隐式关闭处理。贝塞尔曲线可压扁排队,由于做贝塞尔曲线交点的数值不稳定段。
此功能被引入Qt的4.3 。
掉期的画家路径other这个画家路径。这个操作是非常快的,而且永远不会。
此功能被引入Qt的4.8 。
路径转换成使用多边形QTransform matrix,并返回该多边形。
多边形是由首先将所有的子路径为多边形,然后使用回卷技术,以确保重叠的子路径可以使用正确的填充规则填充创建。
注意,倒带插入附加系中的多边形,以便填充多边形的轮廓并不路径的轮廓相匹配。
See also toSubpathPolygons( )toFillPolygons()和QPainterPath Conversion。
这是一个重载函数。
路径转换成多边形使用列表中的QTransform matrix,并返回该列表。
该功能不同于toFillPolygon( )函数,它创建几个多边形。它被设置,因为它通常更快速地绘制几个小的多边形,而不是绘制一个大的多边形,即使点绘制的总数是相同的。
该toFillPolygons ()函数不同于toSubpathPolygons( )函数,它创建具有重叠边界矩形子路径只有多边形。
像toFillPolygon( )函数,该函数使用一个收卷技术,以确保重叠的子路径可以使用正确的填充规则来填补。另外,在多边形复捲插入附加系,以便填充多边形的轮廓并不路径的轮廓相匹配。
See also toSubpathPolygons( )toFillPolygon()和QPainterPath Conversion。
这是一个重载函数。
创建并返回路径的逆转副本。
它是一种颠倒元素的顺序:如果QPainterPath通过调用组成的moveTo( )lineTo()和cubicTo( )按照指定的顺序功能,逆转副本是通过调用组成cubicTo( )lineTo()和moveTo( ) 。
路径转换成多边形使用列表中的QTransform matrix,并返回该列表。
这个函数创建一个多边形的每个子路径,无论相交的子路径(即重叠边界矩形)的。为了确保这种重叠的子路径正确填写,使用toFillPolygons( )函数来代替。
See also toFillPolygons( )toFillPolygon()和QPainterPath Conversion。
这是一个重载函数。
由(转换路径中的所有元素dx,dy) 。
此功能被引入Qt的4.6 。
See also translated( ) 。
这是一个重载函数。
由给定的转化路径中的所有元素offset。
此功能被引入Qt的4.6 。
See also translated( ) 。
返回由(翻译路径的拷贝dx,dy) 。
此功能被引入Qt的4.6 。
See also translate( ) 。
这是一个重载函数。
返回一个由给定的原版的路径的副本offset。
此功能被引入Qt的4.6 。
See also translate( ) 。
返回作为此路径的填充区域和工会的路径p的填充区域。
设置路径的操作将视路径,领域。非闭合路径将被隐式关闭处理。贝塞尔曲线可压扁排队,由于做贝塞尔曲线交点的数值不稳定段。
此功能被引入Qt的4.3 。
See also intersected()和subtracted( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |