转载:Qt SVG Module

SVG(scalable vector graphics可缩放矢量图形)是基于可拓展标记语言(XML),用于描述二维矢量图形的一种图形格式。由W3C制定。是一种和图像分辨率无关的矢量图形格式。它与其他的图像格式相比优势在于:可以通过文本编辑器创建修改;可以被搜索、索引、脚本化或压缩;可伸缩;可以被任何分辨率下高清晰打印;可在图像质量不下降的情况下被放大。

 

使用QT SVG模块需要在.pro文件里添加QT += SVG 

 

这里简单介绍下Qt SVG的四个主要的类:

 

QGraphicsSvgItem

QGraphicsItem that can be used to render the contents of SVG files

QSvgGenerator

Paint device that is used to create SVG drawings

QSvgRenderer

Used to draw the contents of SVG files onto paint devices

QSvgWidget

Widget that is used to display the contents of Scalable Vector Graphics (SVG) files

 

QGraphicsSvgItem是QGraphicsObject的子类,它用来渲染SVG文件的内容。

QSvgGenerator是QPaintDevice的子类,它是用来绘制SVG的paint device。

QSvgRenderer是QObject的子类,它是用来画SVG文件内容到paint device的。

QSvgWidget是QWidget的子类,它是用来展示svg文件内容的窗体部件。

 

 

QGraphicsSvgItem提供一个方法将SVG文件渲染到QGraphicsView。QGraphicsSvgItem可以通过传递SVG文件到它的构造函数,或者显式设置shared QSvgRenderer到它上面。例如下面例子:

 

     QSvgRenderer *renderer = new QSvgRenderer(QLatin1String("SvgCardDeck.svg"));

     QGraphicsSvgItem *black = new QGraphicsSvgItem();

     QGraphicsSvgItem *red   = new QGraphicsSvgItem();

 

     black->setSharedRenderer(renderer);

     black->setElementId(QLatin1String("black_joker"));

 

     red->setSharedRenderer(renderer);

     red->setElementId(QLatin1String("red_joker"));

 

QGraphicsSvgItem提供了一个方法setElementId,只渲染被调用的SVG元素(及孩子元素)。

 

 

QSvgGenerator像一个QPrinter,它是个只写的设备,为了输出专门的格式的内容。为了写出SVG文件,需要先指定名称fileName或outputDevice属性。一般要设置size属性,有些情况需要viewBox属性。例如下面例子:

 

     QSvgGenerator generator;

     generator.setFileName(path);

     generator.setSize(QSize(200, 200));

     generator.setViewBox(QRect(0, 0, 200, 200));

     generator.setTitle(tr("SVG Generator Example Drawing"));

     generator.setDescription(tr("An SVG drawing created by the SVG Generator "

                                 "Example provided with Qt."));

 

     QPainter painter;

     painter.begin(&generator);

     ...

     painter.end();

 

 

使用QSvgRenderer可以渲染文件内容到任意QpaintDevice子类,包括QWidget, QImage, QGLWidget。

 

对于动画SVG绘制,可以使用animated()函数指明是否包含动画信息;使用framesPerSecond设置获取帧率。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值