Qt工作笔记-图像模糊处理,以及动画旋转
发布日期:2021-06-30 10:56:49
浏览次数:2
分类:技术文章
本文共 4305 字,大约阅读时间需要 14 分钟。
gif图很大,不好上传,就上传普通图片:
运行截图如下:
源码如下:
blureffect.h
#ifndef BLUREFFECT_H#define BLUREFFECT_H#includeQT_BEGIN_NAMESPACEclass QGraphicsItem;QT_END_NAMESPACEclass BlurEffect : public QGraphicsBlurEffect{public: BlurEffect(QGraphicsItem *item); void setBaseLine(const qreal y); void draw(QPainter *painter)Q_DECL_OVERRIDE;private: void adjustForItem(); qreal m_baseLine; QGraphicsItem *m_item;};#endif // BLUREFFECT_H
mygraphicsview.h
#ifndef MYGRAPHICSVIEW_H#define MYGRAPHICSVIEW_H#includeclass MyGraphicsView : public QGraphicsView{ Q_OBJECTpublic: explicit MyGraphicsView(QWidget *parent = 0);protected: void keyPressEvent(QKeyEvent *event)Q_DECL_OVERRIDE;signals: void sendDelta(int delta);};#endif // MYGRAPHICSVIEW_H
widget.h
#ifndef WIDGET_H#define WIDGET_H#includeQT_BEGIN_NAMESPACEclass QGraphicsScene;class QGraphicsItem;class QPropertyAnimation;QT_END_NAMESPACEnamespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECT Q_PROPERTY(qreal index READ index WRITE setIndex)public: explicit Widget(QWidget *parent = 0); ~Widget(); qreal index()const; void setIndex(const qreal index);protected slots: void animationRun(int delta);private: Ui::Widget *ui; QGraphicsScene *m_scene; QList m_icons; QPropertyAnimation *m_animation; qreal m_index;};#endif // WIDGET_H
blureffect.cpp
#include "blureffect.h"#include#include BlurEffect::BlurEffect(QGraphicsItem *item) :QGraphicsBlurEffect() ,m_baseLine(200),m_item(item){}void BlurEffect::setBaseLine(const qreal y){ m_baseLine=y;}void BlurEffect::draw(QPainter *painter){ adjustForItem(); QGraphicsBlurEffect::draw(painter);}void BlurEffect::adjustForItem(){ qreal y=m_baseLine-m_item->pos().y(); qreal radius=qBound(qreal(0.0),y/32,qreal(16.0)); setBlurRadius(radius);}
main.cpp
#include "widget.h"#includeint main(int argc, char *argv[]){ QApplication a(argc, argv); Widget w; w.show(); return a.exec();}
mygraphicsview.cpp
#include "mygraphicsview.h"#include#include MyGraphicsView::MyGraphicsView(QWidget *parent) : QGraphicsView(parent){}void MyGraphicsView::keyPressEvent(QKeyEvent *event){ int delta=0; switch(event->key()){ case Qt::Key_Left: delta=-1; break; case Qt::Key_Right: delta=1; break; default: break; } emit sendDelta(delta);}
wiget.cpp
#include "widget.h"#include "ui_widget.h"#include "blureffect.h"#include#include #include #include #include #include #include #include #include #include #ifndef M_PI#define M_PI 3.14159265358979323846#endifWidget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); ui->graphicsView->setStyleSheet("background: transparent;border:0px"); ui->graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ui->graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ui->graphicsView->setRenderHints(ui->graphicsView->renderHints()|QPainter::Antialiasing|QPainter::SmoothPixmapTransform); setWindowFlags(Qt::Window|Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground); setWindowState(Qt::WindowMaximized); m_index=0.0; m_scene=new QGraphicsScene; ui->graphicsView->setScene(m_scene); QStringList fileList; for(int i=0;i<10;i++){ fileList<<":/img/"+QString::number(i+1)+".png"; } for(int i=0;i addPixmap(pixmap); icon->setZValue(1); icon->setGraphicsEffect(new BlurEffect(icon)); m_icons< setDuration(400); m_animation->setEasingCurve(QEasingCurve::InOutSine); ui->graphicsView->setRenderHint(QPainter::Antialiasing,true); connect(ui->graphicsView,SIGNAL(sendDelta(int)),this,SLOT(animationRun(int))); thread()->setPriority(QThread::TimeCriticalPriority);}Widget::~Widget(){ delete ui;}qreal Widget::index() const{ return m_index;}void Widget::setIndex(const qreal index){ m_index=index; qreal baseline=0; for(int i=0;i setPos(pos); baseline=qMax(baseline,ys); static_cast (icon->graphicsEffect())->setBaseLine(baseline); } m_scene->update();}void Widget::animationRun(int delta){ if(m_animation->state()==QAbstractAnimation::Stopped&&delta){ m_animation->setEndValue(m_index+delta); m_animation->start(); }}
转载地址:https://it1995.blog.csdn.net/article/details/82877556 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月15日 09时39分00秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【工具使用】Google免费云环境Colaboratory使用
2019-04-30
【深度学习笔记】卷积层,全连接层,池化层的相关输出参数计算
2019-04-30
【NLP学习笔记】文本分类概述
2019-04-30
【深度学习笔记】文本分类
2019-04-30
【转载】炼丹实验室:深度学习网络调参技巧
2019-04-30
【论文阅读笔记】文本分类论文汇总
2019-04-30
【python学习笔记】jion()函数和split()函数
2019-04-30
【NLP学习笔记】使用jieba实现关键词提取
2019-04-30
【深度学习笔记】卷积的原理
2019-04-30
【深度学习笔记】卷积的基础知识
2019-04-30
【NLP学习笔记】TF-IDF
2019-04-30
【NLP学习笔记】文本相似度计算——判断两篇文章是否相似
2019-04-30
【NLP学习笔记】余弦相似度
2019-04-30
【NLP学习笔记】One-hot encoding:独热编码
2019-04-30
【NLP学习笔记】word2vec
2019-04-30
【工具使用】如何去掉CSDN-markdown编辑器中图片的水印
2019-04-30