qt用QPainter绘制会动会闪烁的奥运标志
效果视频地址:
https://www.bilibili.com/video/av85608043/
源码:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QTimer>
namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();void paintEvent(QPaintEvent *event);QTimer *timer;
public slots:void timeDeal();
private:Ui::MainWindow *ui;
};#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPainter>
#include <QThread>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);timer = new QTimer;timer->setInterval(20);connect(timer,SIGNAL(timeout()),this,SLOT(timeDeal()));timer->start();
}MainWindow::~MainWindow()
{delete ui;
}static int i = 0;void MainWindow::paintEvent(QPaintEvent *event)
{Q_UNUSED(event);QPainter painter(this);int pSize = 3;// 设置画笔颜色int r = qrand()%255;int g = qrand()%255;int b = qrand()%255;painter.setPen(QPen(QColor(r, g, b),pSize));QRectF rect(50.0, 50.0, 100.0, 100.0);painter.setRenderHint(QPainter:: Antialiasing, true); //设置渲染,启动反锯齿painter.drawArc(rect,i*16,i*16); //绘画角度为30°~(30+150°)QPainter painter1(this);// 设置画笔颜色r = qrand()%255;g = qrand()%255;b = qrand()%255;painter1.setPen(QPen(QColor(r, g, b),pSize));QRectF rect1(150.0, 50.0, 100.0, 100.0);painter1.setRenderHint(QPainter:: Antialiasing, true); //设置渲染,启动反锯齿painter1.drawArc(rect1,i*16,i*16); //绘画角度为30°~(30+150°)QPainter painter2(this);// 设置画笔颜色r = qrand()%255;g = qrand()%255;b = qrand()%255;painter2.setPen(QPen(QColor(r, g, b),pSize));QRectF rect2(250.0, 50.0, 100.0, 100.0);painter2.setRenderHint(QPainter:: Antialiasing, true); //设置渲染,启动反锯齿painter2.drawArc(rect2,i*16,i*16); //绘画角度为30°~(30+150°)QPainter painter3(this);// 设置画笔颜色r = qrand()%255;g = qrand()%255;b = qrand()%255;painter3.setPen(QPen(QColor(r, g, b),pSize));QRectF rect3(100.0, 100.0, 100.0, 100.0);painter3.setRenderHint(QPainter:: Antialiasing, true); //设置渲染,启动反锯齿painter3.drawArc(rect3,i*16,i*16); //绘画角度为30°~(30+150°)QPainter painter4(this);// 设置画笔颜色r = qrand()%255;g = qrand()%255;b = qrand()%255;painter4.setPen(QPen(QColor(r, g, b),pSize));QRectF rect4(200.0, 100.0, 100.0, 100.0);painter4.setRenderHint(QPainter:: Antialiasing, true); //设置渲染,启动反锯齿painter4.drawArc(rect4,i*16,i*16); //绘画角度为30°~(30+150°)QFont font;font.setPixelSize(50);QString text = "奥林匹克";QFontMetrics metrics(font);int w = metrics.width(text);int h = metrics.height();QPainter painter5(this);r = qrand()%255;g = qrand()%255;b = qrand()%255;painter5.setFont(font);painter5.setPen(QPen(QColor(r, g, b),pSize));QRectF rect5(120.0,250.0,200,50);painter5.drawText(rect5,text);
}void MainWindow::timeDeal(){i++;update();}
qt用QPainter绘制会动会闪烁的奥运标志相关推荐
- Qt使用QPainter绘制方式显示图片
Qt使用QPainter绘制方式显示图片 文章目录 Qt使用QPainter绘制方式显示图片 1.前言 2.主要代码 3.实现效果 4.源代码 更多精彩内容
- QT 中QPainter绘制文字、图片
1. 把字符串绘制在QPixmap上 QPixmap MainWindow::text2Pixmap(QString text) { QFontMetrics fmt(m_font); QPixmap ...
- Qt 通过 QPainter 绘制坐标轴
一.概述 在自定义贝塞尔曲线中想绘制一个坐标轴. 二.步骤 2.1 新建一个类 PaintAxis 继承 QWidget 然后在界面上拖拽一个 widget,右键 widget 提升为 PaintAx ...
- 使用Qt的QPainter绘制阿基米德螺旋线
把笔记 c++绘制极坐标曲线 的代码中的allegro换成Qt的了. 因为自定义的QWidget写在源文件中所以Q_OBJECT注释掉了. #include <QApplication> ...
- QT之QPainter用法
QPainter可以绘制从简单的直线到像饼图和弦这样的复杂形状.它也可以绘制排列的文本和像素映射.通常,它在一个"自然的"坐标系统中绘制. QPainter 一般在部件的绘图事件 ...
- QT基础之一文介绍QPainter绘制基础图形(画笔画刷设置,填充铺展渐变效果)
更多参见 QT基础与实例应用目录 代码链接 GitHub链接 :QPainterSimpleExample 介绍 结合实例介绍如何利用QPainter绘制各种图形,可绘制不同形状,使用不同画笔颜色.画 ...
- VS+QT QPainter 绘制直线
1.打开软件,创建一个GUI项目文件. 2.编写.h(Draw2.h)文件代码,如下: #pragma once#include <QtWidgets/QMainWindow> #incl ...
- Qt组件中的双缓冲无闪烁绘图
双缓冲绘图 在Qt4中,所有的窗口部件默认都使用双缓冲进行绘图.使用双缓冲,可以减轻绘制的闪烁感.在有些情况下,用户要关闭双缓冲,自己管理绘图.下面的语句设置了窗口部件的Qt::WA_PaintOnS ...
- PyQt5利用QPainter绘制各种图形
这个例子我做了好几天: 1)官网C++的源码,改写成PyQt5版本的代码,好多细节不会转化 2)网上的PyQt的例子根本运行不了 填了无数个坑,结合二者,终于能完成了一个关于绘图的东西.这个过程也掌握 ...
最新文章
- 无法解析的外部符号 WinMain,该符号在函数 int __cdecl invoke_main(void) (?invoke_main@@YAHXZ) 中被引用
- 路由异常的起源-如何影响最终用户?——Vecloud微云
- 计算机科学和机器学习中的代数学、拓扑学、微积分以及最优化理论
- P1003 铺地毯(模拟)
- ubuntu设置始终亮屏_如何设置默认显示亮度?
- 传统配置形式存在的问题
- python的运算顺序和c一样吗,【Python】Python 对比 C语言的差异
- webpack(2)--开发环境基本配置
- [译]Kinect for Windows SDK开发入门(二):基础知识 上
- java洗扑克牌算法分析_IT兄弟连 Java语法教程 综合案例
- 如何在Ubuntu 16.04上安装和配置GitLab
- 2020 年百度之星·程序设计大赛 - 初赛一
- 【mmcv】——CNN
- 基于java宿舍管理系统的开题报告_基于Java的学生宿舍管理系统开题报告
- U盘插入后只显示安全删除硬件问题
- 【技美百人计划】屏幕空间实现dither等溶解效果
- 为什么字节跳动的年薪50万的软件测试工程师遍地都是?
- iframe去除边框
- [python爬虫之路day5]:实战之电影天堂2019精选电影爬取
- 数据构造---家族树