QT静态图片实现数字雨

刚开始做的时候有一种无从下手的感觉,后来慢慢研究下来感觉也还可以,也可以做
一开始想着就是用双缓存方式实现,想了两种实现方法,一种想着将静态图拷贝一份,一张下移后显示上一张,另一种就是将一张图片裁剪,每次裁剪一部分,这样循环显示。
后来把第一种否掉了,使用了第二种

主要使用QPixmap,QTimer,QPalette,QPainter类

主要核心代码就是

// m_curPixmap 存放的是当前显示的图片
m_tmpPixmap = QPixmap(m_curPixmap.size());
QPainter pPainter(&m_tmpPixmap);

samllPixmap = m_curPixmap.copy(0, m_iPixmapHeight - m_iPixmapUpdate, m_iPixmapWidth, m_iPixmapUpdate);             // 小图片
bigPixmap = m_curPixmap.copy(0, 0, m_iPixmapWidth, m_iPixmapHeight - m_iPixmapUpdate);                             // 大图片

pPainter.drawPixmap(0, 0, m_iPixmapWidth, m_iPixmapUpdate, samllPixmap);
pPainter.drawPixmap(0, m_iPixmapUpdate, m_iPixmapWidth, m_iPixmapHeight - m_iPixmapUpdate, bigPixmap);
m_curPixmap = m_tmpPixmap;

m_mainBackGround.setBrush(QPalette::Window,
                          QBrush(m_curPixmap.scaled(     // 缩放背景图
                          this->size(),
                          Qt::IgnoreAspectRatio,
                          Qt::SmoothTransformation)));    // 使用平滑的缩放方式
setPalette(m_mainBackGround);
update();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章