Qt-顯示SVG格式圖片
阿新 • • 發佈:2022-03-14
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); }