QPainter 提供了很多接口函数用于绘制基本图形,包括点、直线、椭圆、矩形等,这些基本
图形可以构成复杂的图形。
本文使用QPainter 画各种图形,如椭圆、弧形、和玄、凸多边形、线、扇形,不规则多边形,橡皮擦第等
声明QPainter 画笔设置
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);//抗锯齿 高保真
painter.setRenderHint(QPainter::TextAntialiasing);
int W = this->width();
int H = this->height();
QPen pen;
pen.setWidth(3);//线粗
pen.setColor(Qt::red);//线条 颜色
pen.setStyle((Qt::SolidLine));//实线
pen.setCapStyle(Qt::FlatCap);//线的端点样式
pen.setJoinStyle(Qt::BevelJoin);//两节点样式
painter.setPen(pen);
画椭圆
QRect rect(W/4,H/4,W/2,H/2);
painter.drawEllipse(rect);
画弧线
QRect rect(W/4,H/4,W/2,H/2);
int startAngle = 90*16;//起始90°
int spanAngle = 90*16;//旋转90°
painter.drawArc(rect,startAngle,spanAngle);
画和玄
QRect rect(W/4,H/4,W/2,H/2);
int startAngle = 90 * 16; //起始90°
int spanAngle = 90 * 16; //旋转90°
painter.drawChord(rect, startAngle, spanAngle);
画凸多边形
QPoint points[9]={
QPoint(5*W/12,H/4),
QPoint(7*W/12,H/4),
QPoint(3*W/4,5*H/12),
QPoint(3*W/4,7*H/12),
QPoint(7*W/12,3*H/4),
QPoint(5*W/12,3*H/4),
QPoint(W/4,7*H/12),
QPoint(W/4,5*H/12),
QPoint(5*W/12,H/4)
};
painter.drawConvexPolygon(points, 9);
画/加载图片
QRect rect(W/4,H/4,W/2,H/2);
QImage image(":/images/images/qt.jpg");
painter.drawImage(rect, image);
画一条线
QLine Line(W/4,H/4,W/2,H/2);
painter.drawLine(Line);
画多条线
QRect rect(W/4,H/4,W/2,H/2);
QList<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);
按照绘制路径绘图
QRect rect(W/4,H/4,W/2,H/2);
QPainterPath path;
path.addEllipse(rect);
path.addRect(rect);
painter.drawPath(path);
画扇形
QRect rect(W/4,H/4,W/2,H/2);
int startAngle = 40 * 16;//起始40°
int spanAngle = 120 * 16;//旋转120°
painter.drawPie(rect, startAngle, spanAngle);
画多边形
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);
画多边线
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);
画圆弧角矩形
QRect rect(W/4,H/4,W/2,H/2);
painter.drawRoundedRect(rect,20,20);
画一段文字
QRect rect(W/4,H/4,W/2,H/2);
QFont font;
font.setPointSize(30);
font.setBold(true);
painter.setFont(font);
painter.drawText (rect,"Hello,Qt");
画橡皮擦矩形
QRect rect(W/4,H/4,W/3,H/3);
painter.eraseRect(rect);
显示不全部分为擦除的矩形
给矩形框画上颜色
QRect rect(W/4,H/4,W/2,H/2);
painter.fillRect (rect,Qt::green);
按路径涂色
填充两个图形之间的空隙为红色
QRect rect(W/4,H/4,W/2,H/2);
QPainterPath path;
path.addEllipse(rect);
path.addRect(rect);
painter.fillPath(path,Qt::red);
画一些点
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);
}