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);
}