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

 

posted on 2022-03-14 15:46  不再低调  阅读(778)  评论(0编辑  收藏  举报