2012-04-09 37 views
2

你会如何建议使用QPixmap处理svg?QPixmap和SVG

构造QPixmap(":/myfile.svg");然后调用scaled()不起作用。 QPixmap被像素化。

Thx。

回答

5

您应该使用SVGRenderer将其渲染到QImage。从那里你可以用QPixmap::convertFromImage转换成QPixmap

+1

Thx,我喜欢这里建议:http://stackoverflow.com/questions/8551690/qt-how-to-render-scaled-svg-to-qimage – 2012-04-09 20:57:54

+1

可以创建QPainter上QPixmap和呈现SVG直接到QPixmap。 – 2014-07-30 06:19:24

3

类似的东西:

QSvgRenderer renderer(svg_file_name); 
QPixmap pm(width, height); 
pm.fill(fill_color); 
QPainter painter(&pm); 
renderer.render(&painter, pm.rect()); 
7

现在有无需SVG模块

QIcon("filepath.svg").pixmap(QSize()) 

如此简单和正常工作的更简单的方式。至少在我的情况下,它的工作。

+0

至少就图标的有限用例而言,**现在应该是被接受的答案**注意'QIcon :: addFile()'方法*也*现在隐式接受SVG文件,允许每个图标模式并声明与自己的SVG文件相关联。 – 2017-06-17 05:10:51