Qt-顯示SVG格式圖片


    SVG(Scalable Vector Graphics),即可縮放的矢量圖形,是規范中的網格矢量圖形標准,是一個開放的圖形標准,有以下特點:

  • 基於XML表示的矢量圖形文件
  • 采用文本來描述對象
  • 具有交互型和動態性
  • 完全支持DOM

    SVG相對於GIF、JPEG格式的優勢如下:

  • 文件小,對於網絡而言,下載速度快
  • 可任意縮放而不會破壞圖像的清晰度和細節
  • 圖像中的文字獨立於圖像,文字保留可編輯和可搜尋狀態,也沒有字體限制,用戶系統即使沒用安裝某一字體,也可看到與制作時完全相同的畫面等

    Qt為SVG格式圖片的顯示與生成提供了專門的QtSvg模塊,包含QSvgWidget、QSvgRender、QGraphicsSvgItem

1. 添加頭文件:#include <QtSvg>

2. 響應鼠標的滾輪事件,使SVG圖片能夠通過鼠標滾輪的滾動進行播放:void wheelEvent(QWheelEvent *);

void wheelEvent(QWheelEvent* e)
{
    const double diff = 0.1;  //diff的值表示每次滾輪滾動一定的值,圖片大小改變的比例
    QSize size = render()->defaultSize();  //獲取圖片顯示區的尺寸,以便進行縮放操作
    int width = size.width();
    int height = size.height();
    //QWheelEvent的delta()函數獲得滾輪滾動的距離值,若距離值>0,則表示滾輪向前(遠離用戶的方向)滾動,反之表示向后(靠近用戶的方向)滾動
    //鼠標滾動事件,滾輪每滾動1°,相當於移動8°,常見的滾輪鼠標撥動一下滾動的角度為15°,所以滾輪波動一下相當於移動了120(=15 * 8)°
    if(e->delta() > 0)
    {
        //對圖片的長、寬值進行處理,放大一定比例
        width = int(this->width() + this->width() * diff);
        height = int(this->height() + this->height() * diff);
    }
    else
    {
        //對圖片的長、寬值進行處理,縮小一定比例
        width = int(this->width() - this->width() * diff);
        height = int(this->height() - this->height() * diff);
    }
    
    //利用新的長、寬值對圖片進行resize()操作
    resize(width, height);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM