您现在的位置是:首页 >技术杂谈 >QT QPainter 绘制基本图形元件简介网站首页技术杂谈

QT QPainter 绘制基本图形元件简介

木士易 2023-06-02 00:00:03
简介QT QPainter 绘制基本图形元件简介

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);

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。