QT开发中文网

QPixmap pixmap(renderer.defaultSize());只是传入了图片尺寸,并没有把图片渲染到QPixmap

您是正确的,我混淆了 QPixmap 的构造函数和渲染 QSvgRenderer 对象到 QPixmap 上的过程。

要将 SVG 渲染到 QPixmap 上,需要在 QPainter 对象中进行绘制。以下是一个示例:

#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 加载 SVG 文件
    QSvgRenderer renderer("your_svg_file.svg");

    // 创建 QPixmap 对象并设置大小
    QPixmap pixmap(renderer.defaultSize());

    // 使用 QPainter 在 pixmap 上绘制 SVG 图像
    pixmap.fill(Qt::transparent);
    QPainter painter(&pixmap);
    renderer.render(&painter);

    // 显示绘制好的图像到界面上 
    QLabel label;
    label.setPixmap(pixmap);
    label.show();

   return a.exec();
}

首先,我们创建了一个 QSvgRenderer 对象并加载了指定的 SVG 文件。然后,我们使用 renderer.defaultSize() 获取SVG文件默认尺寸,并将其作为参数传递给 QPixmap 构造函数来创建一个具有相同大小的 QPixmap 对象。

接下来,在 pixmap 上使用 QPainter 绘制SVG图像。首先,我们使用 fill() 函数将所有像素点都填充为透明色。然后,我们创建了一个 QPainter 对象,并调用渲染器的 render() 函数来将 SVG 图像渲染到当前绘图设备(即 pixmap)上。

最后,我们创建了一个 QLabel 控件,并将 pixmap 设置为其背景图像。这样就可以在界面上显示渲染后的 SVG 图像了。

希望这个回答对您有所帮助。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1671

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?