Qt-QPainter实现动图与时钟

目录:

  1. 基础知识
  2. 应用1:利用计时器实现动图
  3. 应用2:绘制钟表

一.QPainter的一些基础知识

  • QPainter只能在类对象的paintEvent()函数中绘制图形
  • QPainter类的成员有:
    1.QPen :画图形的”笔“,即图形的边框,可以设定其颜色,宽度等
    2.QBrush :调色板,决定边框里面的颜色,可以设定颜色,风格等
    3.QFont :文本格式,可以设定字体(如宋体),颜色,粗细等
    4.QPixmap :绘制图片
    5.通过painter.save()与painter.restore()可以实现状态的保存和恢复
    同时这些状态采用类似堆栈的存储方式,即后存的先恢复
    常用于旋转后的坐标轴恢复等情况
    QPainter的一些基础图形绘制
成员函数 功能
drawPoint() 绘制点
deawLine() 绘制直线
drawRect() 绘制矩形
drawArc() 绘制圆弧
drawEllipse() 绘制椭圆
drawConvexPolygon() 绘制多边形

最基本的绘制模板

QPainter painter(this);//必须
painter.setPen(...);//设置画笔格式,非必须
pinater.setBrush(...);//设置填充内容,非必须
painter.setRenderHint(QPainter:: Antialiasing, true);  //设置渲染,启动反锯齿,非必须
painter.draw...();//绘制图形

二.利用计时器实现动图
思路如下:
动图即有序而连贯的打印一组图片,即按照一定时间间隔打印图片,则应该使用到计时器,在每个计时器函数中实现一次图片的打印,同时应该提前将图片编号

若图片数目较多,则应该编写读取图片的函数

若要实现循环,则应令设置一参数用于记录当前打印图片编号,当一轮结束后重置

关键代码如下:

头文件中:

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
    void paintEvent(QPaintEvent*m);
    void timerEvent(QTimerEvent*m);
    void Initpixmap();//此函数用于读取图片,并将其存入数组中
private:
    Ui::Dialog *ui;
    int number;
    QPixmap pixmap[64];//用于存储图片的数组

源文件中:

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
   
    ui->setupUi(this)
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值