—— 均为自学笔记,如有错误请指正
第一节 基础绘图事件
1. 声明
//绘图事件
void paintEvent(QPaintEvent *);
2. 定义 <重写绘图事件>
//绘图事件
void Widget::paintEvent(QPaintEvent *)
{
//实例化 画家对象
QPainter painter(this); //此处的this指的是在当前窗口画画(绘图设备),而非指定父窗口
//设置画笔 <先设置画笔再画画才有效>
//设置画笔颜色
QPen pen(QColor(255,0,0));
//设置画笔宽度
pen.setWidth(3); // 默认值为 1
//设置画笔风格
pen.setStyle(Qt::DotLine);
//让画家使用画笔
painter.setPen(pen);
//设置画刷
//设置画刷颜色<填充封闭图形颜色>
QBrush brush(Qt::cyan);
//设置画刷风格
brush.setStyle(Qt::Dense7Pattern);
//让画家使用画刷
painter.setBrush(brush);
//开始画画
//画线
painter.drawLine(QPoint(0,0),QPoint(100,100));
//画圆 <椭圆>
painter.drawEllipse(QPoint(100,100),100,50);
//画矩形
painter.drawRect(QRect(20,20,50,50));
//画文字
painter.drawText(QRect(10,200,150,50),"好好学习,天天向上");
}
3. 注释说明
- 注:画笔风格
- 注:画刷颜色
- 注:画刷风格
第二节 绘图高级基础设置
1. 声明
<同上>
2. 定义
<位置同上:绘图事件函数中>
void Widget::paintEvent(QPaintEvent *)
{
//声明画家
QPainter painter(this);
//画圆
//画圆 1
painter.drawEllipse(QPoint(100,50),50,50);
//画圆 2
//设置抗锯齿能力 <画的更清晰,但是效率低>
painter.setRenderHint(QPainter::Antialiasing);
painter.drawEllipse(QPoint(200,50),50,50);
//画矩形 法一
//画矩形 1
painter.drawRect(QRect(20,20,50,50)); //位置1
//画矩形 2
//移动画家 <重置原点坐标>
painter.translate(100,0);
painter.drawRect(QRect(20,20,50,50)); //位置2
//画矩形 3 & 移动画家
painter.translate(100,0);
painter.drawRect(QRect(20,20,50,50)); //位置3
//画矩形 法二
//画矩形 1
painter.drawRect(QRect(20,20,50,50)); //位置1
//移动画家 <重置原点坐标>
painter.translate(100,0);
//保存画家状态
painter.save();
painter.drawRect(QRect(20,20,50,50)); //位置2
painter.translate(100,0);
//还原画家保存状态
painter.restore();
painter.drawRect(QRect(20,20,50,50)); //位置2
}
3. 结果展示
- 画圆 结果
- 画矩形 法一结果
- 画矩形 法二结果
第三节 手动调用绘图事件
注: QLabel 可以画资源图片,Qpainter也可以画资源图片
1.添加资源文件
<略>
2. 代码
注:点击移动按钮 移动图片<应写在构造函数中,而非重置绘图函数中>
- 声明
// 头文件中声明:
//图片位置对象
int posX = 0 ;
- 定义
//构造函数中实现:
//点击移动按钮 移动图片
connect(ui->pushButton,&QPushButton::clicked,[=](){
posX += 20 ;
// 如果超出屏幕 从0开始
if(posX > this->width())
{
posX = 0;
}
//调用函数 <手动调用绘图事件用 update更新!!!!重点!!!!!>
update();
});
//绘图函数中实现:
//声明画家
QPainter painter(this);
painter.drawPixmap(posX,0,QPixmap(":/Image/Luffy.png"));
3. 注释说明
- 注:drawPixmap()参数说明
4. 结果展示
- drawPixmap()添加图片结果