2012-04-09 35 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