重点:
1.QPainter在QWidget窗口的paintEvent中使用。
2.QPainter通常涉及到设置画笔、设置画刷、绘图(QPen、QBrush、drawxx)三个流程。
class Widget : public QWidget
{
Q_OBJECT
protected:
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()等等。