重点:
1.QPainter在QWidget窗口的paintEvent中使用。
2.QPainter通常涉及到设置画笔、设置画刷、绘图(QPen、QBrush、drawxx)三个流程。
class Widget : public QWidget
{Q_OBJECTprotected:void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;public:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;
};oid Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this); //创建QPainter对象painter.setRenderHint(QPainter::Antialiasing);painter.setRenderHint(QPainter::TextAntialiasing);int W=this->width(); //绘图区宽度int H=this->height(); //绘图区高度QRect rect(W/4,H/4,W/2,H/2); //中间区域矩形框//设置画笔QPen pen;pen.setWidth(3); //线宽pen.setColor(Qt::red); //划线颜色pen.setStyle(Qt::SolidLine); //线的样式,实线、虚线等pen.setCapStyle(Qt::FlatCap); //线端点样式pen.setJoinStyle(Qt::BevelJoin); //线的连接点样式painter.setPen(pen);//设置画刷QBrush brush;brush.setColor(Qt::yellow); //画刷颜色brush.setStyle(Qt::SolidPattern); //画刷填充样式painter.setBrush(brush);//绘图painter.drawRect(rect); //填充定义的渐变区域event->accept();
}
其中QPen设计三种方式:
其中QBrush主要函数有:
画刷的样式内容如下:
其中材质(setTexture)的填充方法如下:
//设置画刷QPixmap texturePixmap(":images/images/texture.jpg");QBrush brush;brush.setStyle(Qt::TexturePattern); //画刷填充样式brush.setTexture(texturePixmap); //设置材质图片painter.setBrush(brush);
继承画刷的子类有三种,主要是渐变填充效果(具体设置看代码的构造使用方法)
最后绘图 painter.drawRect(rect); 则包含多种绘制的方式有drawPoint(),drawLine(),drawArc()等等。