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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章