Qpainter 绘图

1 绘图事件 void paintEvent(QPaintEvent *event)

2 声明一个画家对象 QPainter painter(this) this  指定绘图设备

3 画线 圆 矩形 文字等

4 设置画笔 QPen 设置画笔宽度,风格

5 设置画刷 QBrush 设置画刷 风格

QPainter qPainter(this);//实例化画家对象 this 执向的是绘画设备
//画线
qPainter.drawLine(10,10,100,100); QPen pen(QColor(255,222,0));
qPainter.setPen(pen);
pen.setWidth(3);
QBrush qBrush(Qt::cyan);
qPainter.setBrush(qBrush); qPainter.drawEllipse(QPoint(100,100),50,30);
qPainter.drawRect(QRect(200,200,100,100)); qPainter.drawText(QRect(100,200,100,100),"到店下班了 11");

QPainter 高级设置

1 抗锯齿 效率低 画的更精细  painter2.setRenderHint(QPainter::HighQualityAntialiasing);

2 对画家进行移动。painter2.translate(300,20);

3 保存画家状态。painter2.save();

4 还原画家状态 painter2.restore();

    //高级
QPainter painter2(this);
painter2.drawEllipse(200,20,100,100);
painter2.translate(300,20);
painter2.setRenderHint(QPainter::HighQualityAntialiasing);
painter2.save();
painter2.drawEllipse(200,20,100,100);
painter2.restore();
painter2.drawEllipse(200,20,100,100);

手动调用一下painter 用update

1 利用画家画图片 drawPixmap(posx,300,QPixmap(":/8by.png"));

widget.h

public:
int posx;
protected:
void paintEvent(QPaintEvent *event);

widget.cpp

\#include "widget.h"
#include "ui_widget.h"
#include<QPaintEvent>
#include<QPainter>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this); posx = 20; connect(ui->pushButton,&QPushButton::clicked,[=](){
update();
posx+=20;
}); } Widget::~Widget()
{
delete ui;
} void Widget::paintEvent(QPaintEvent *event)
{
QPainter qPainter(this);//实例化画家对象 this 执向的是绘画设备
//画线
qPainter.drawLine(10,10,100,100); QPen pen(QColor(255,222,0));
qPainter.setPen(pen);
pen.setWidth(3);
QBrush qBrush(Qt::cyan);
qPainter.setBrush(qBrush); qPainter.drawEllipse(QPoint(100,100),50,30);
qPainter.drawRect(QRect(200,200,100,100)); qPainter.drawText(QRect(100,200,100,100),"到店下班了 11"); //高级
QPainter painter2(this);
painter2.drawEllipse(200,20,100,100);
painter2.translate(300,20);
painter2.setRenderHint(QPainter::HighQualityAntialiasing);
painter2.save();
painter2.drawEllipse(200,20,100,100);
painter2.restore();
painter2.drawEllipse(200,20,100,100); ///////画图////////
QPainter painter3(this);
if(posx > this->width()){
posx= 20;
}
painter3.drawPixmap(posx,300,QPixmap(":/8by.png"));
}

最新文章

  1. ORACLE之ASM学习
  2. Mybatis在xml文件中处理大于号小于号的方法
  3. javascript权威指南笔记--javascript语言核心(二)
  4. 洛谷P1461 海明码 Hamming Codes
  5. AwSnap:让全版本(Windows、iOS、Android)Chrome浏览器崩溃的有趣漏洞
  6. [Linked List]Remove Duplicates from Sorted List
  7. 关于css起名
  8. ASP.NET Core 新核心对象WebHost(一)
  9. 如何在Anoconda Prompt 安装pytorch
  10. 阿里云oss服务通用类
  11. SSL延迟有多大 (Https)
  12. web上传照片
  13. Java中的volatile关键字为什么不是不具有原子性
  14. 《编程题》穷举法求N年后有多少头牛
  15. HAProxy负载均衡原理及企业级实例部署haproxy集群
  16. 问答项目---登陆账号密码登陆做AJAX异步校验
  17. ansible报错AttributeError: module &#39;urllib.request&#39; has no attribute &#39;HTTPSHandler&#39;
  18. C# 判断是否是节假日
  19. LoadRunner Error code 10053,Software caused connection abort
  20. 计算机网络透明网桥算法时间戳c++

热门文章

  1. ACL权限控制
  2. 1.为什么要从古典概率入门概率学《zobol的考研概率论教程》
  3. 记一次ms17-010复现过程
  4. node zlib压缩模块了解一下
  5. 关于Vue的几个实用知识点(持续更新中……)
  6. 【RPA之家转载】苏桦 华为RPA 企业财务实践:RPA与AI结合,实现百万级票据、合同处理自动化
  7. 几百行代码实现一个 JSON 解析器
  8. python采集一下美团外卖数据~~
  9. typescript+webpack构建一个js库
  10. 使用Scrcpy投屏