方法有两种,使用QSvgRenderer与不使用QSvgRenderer
一.效果
二.Qt小贴士:在高分屏下渲染SVG到QPixmap (译)
使用Qt类将SVG转换为QPixmap格式是非常容易的,在Qt文档中有些相关的例子,但是这些例子仅仅处理了屏幕设备的标准像素比为1的情况。
如果你需要在高分屏上显示图像,结果会有些不一样。下面的函数传入SVG文件的路径,并根据第一个参数指定的尺寸返回QPixmap。
QPixmap FromSvgToPixmap(const QSize &ImageSize, const QString &SvgFile)
{
QSvgRenderer SvgRenderer(SvgFile);
QPixmap Image(ImageSize);
QPainter Painter;
Image.fill(Qt::transparent);
Painter.begin(&Image);
SvgRenderer.render(&Painter);
Painter.end();
return Image;
}
这个函数在标准PC显示器下可以正常工作,QSvgRender对象按照指定的图像尺寸将SVG渲染到QPixmap。但是在高分屏下,你会注意到图像会显示得比正常的小,而且绘制效果不好,这是因为图像是按照屏幕像素比为1的情况进行绘制的。高分屏有更高的像素比,如果图像按照实际的尺寸来渲染,图像看起来就像“缩水了”。
幸运的是, 按照当前屏幕像素比来调整渲染操作并不复杂,如下所示:
QPixmap F