1.基本图形元件
QPainter 提供了很多绘制基本图形的功能,包括点、直线、椭圆、矩形、曲线等,由这些基本的图形可以构成复杂的图形。QPainter 中提供的绘制基本图元的函数如下表所示。每个函数基本上都有多种参数形式,这里只列出函数名,给出了其中一种参数形式的示例代码,并且假设已经通过以下的代码获得了绘图窗口的 painter、窗口宽度W和高度H。
QPainter painter(this);
int w=this->width(); //绘图区宽度
int H=this->height(); //绘图区高度
同一个函数名的其他参数形式的函数原型可查阅 Qt 的帮助文件。
函数名 | 功能和示例代码 | 示例图形 |
drawArc | 画弧线,例如 QRect rect(W/4,H/4,/2,H/2); int startAngle = 90 * 16;//起始 90° int spanAngle = 90 * 16;//旋转 90° painter.drawArc(rect, startAngle, spanAngle); | |
drawChord | 画一段弦,例如 QRect rect(W/4,H/4,W/2,H/2); int startAnqle = 90 * 16;//起始 90° int spanAngle = 90 * 16;//旋转 90° painter. drawChord (rect, startAngle, spanAngle); | |
drawConvexPolygon | 根据给定的点画凸多边形 QPoint points[4]={ QPoint(5*W/12,H/4), QPoint(3*W/4,5*H/12), QPoint(5*W/12,3*H/4), QPoint(W/45*H/12),}; painter.drawConvexPolygon(points, 4); | |
drawEllipse | 画椭圆 QRect rect(W/4,H/4,W/2,H/2); painter.drawEllipse(rect); | |
drawImage | 在指定的矩形区域内绘制图片 QRect rect(W/4,H/4,W/2,H/2); QImage image(":images/images/qt.jpg"); painter.drawImage(rect, image); | |
drawLine | 画直线 OLine Line(W/4,H/4,W/2,H/2); painter.drawLine(Line); | |
drawLines | 画一批直线 QRectrect(W/4,H/4,W/2,H/2); QVector<QLine> Lines; Lines.append(QLine(rect.topLeft(),rect.bottomRight())); Lines.append(QLine(rect.topRight(),rect.bottomLeft())); Lines.append(QLine(rect.topLeft(),rect.bottomLeft())); Lines.append(QLine(rect.topRight(),rect,bottomRight())); painter.drawLines(Lines); | |
drawPath | 绘制由QPainterPath对象定义的路线 QRect rect(W/4,H/4,W/2,H/2); QPainterPath path;path.addEllipse(rect); path.addRect(rect); painter.drawPath(path); | |
drawPie | 绘制扇形 QRect rect(W/4,H/4,W/2,H/2); int startAnqle = 40 * 16;//起始40° int spanAngle = 120 * 16;//旋转120°painter.drawPie(rect, startAngle, spanAngle); | |
drawPixmap | 绘制 Pixmap图片 QRect rect(W/4,H/4,W/2,H/2); QPixmappixmap(":images/images/qt.jpg"); painter.drawPixmap(rect, pixmap); | |
drawPoint | 画一个点 painter.drawPoint(QPoint(W/2,H/2)); | |
drawPoints | 画一批点 QPoint points[]={ QPoint(5*W/12,H/4), QPoint(3*W/4,5*H/12), QPoint(2*W/4,5*H/12)}; painter.drawPoints(points, 3); | |
drawPolygon | 画多边形,最后一个点会和第一个点闭合 QPoint points[]={QPoint(5*W/12,H/4), QPoint(3*W/4,5*H/12), QPoint(5*W/12,3*H/4), QPoint(2*W/4,5*H/12)}; painter.drawPolygon(points, 4); | |
drawPolyline | 画多点连接的线,最后一个点不会和第一个点连接QPoint points[]={ QPoint(5*W/12,H/4), QPoint(3*W/4,5*H/12), QPoint(5*W/12,3*H/4), QPoint(2*W/4,5*H/12),}; painter.drawPolyline(points, 4); | |
drawRect | 画矩形 QRect rect(W/4,H/4,W/2,H/2); painter.drawRect(rect); | |
drawRoundedRect | 画圆角矩形 ORect rect(W/4,H/4,W/2,H/2); painter.drawRoundedRect(rect,20,20); | |
drawText | 绘制文本,只能绘制单行文字,字体的大小等属性由 QPainter::font0)决定。 QRect rect(W/4,H/4,W/2,H/2); QFontfont;font.setPointSize(30); font.setBold(true); painter.setFont(font); painter.drawText (rect,"Hello,Qt"); | |
eraseRect | 擦除某个矩形区域,等效于用背景色填充该区域 QRect rect(W/4,H/4,W/2,H/2); painter.eraseRect(rect); | |
fillPath | 填充某个QPainterPath 定义的绘图路径,但是轮廓线不显示 QRect rect(W/4,H/4,W/2,H/2); QPainterPath path; path.addEllipse(rect); path.addRect(rect); painter.fillPath(path,Qt::red); | |
fillRect | 填充一个矩形,无边框线 QRect rect(W/4,H/4,W/2,H/2); painter.fillRect (rect,Ot::green); |