Qt QML画布中的SVG光栅化问题

Qt QML画布中的SVG光栅化问题,qt,canvas,svg,qml,Qt,Canvas,Svg,Qml,我在使用QML画布方法渲染SVG图标时遇到问题。 基本上,QML画布忽略光栅化大小,并从其原始大小(在本例中为48x48px)开始绘制图像,并使用丑陋的锯齿效果将其放大 有没有人见过这一点,并可能想出了解决办法 请参阅以获取一个独立的示例。 这里我只复制QML代码和我看到的屏幕截图 从左边开始: 原始SVG图标作为图像项(正确) drawImage呈现的图像项相同(老实说,我希望这也是正确的,因为光栅化数据应该由Image提供) SVG图标加载了中说明的过程,加载了loadImage和onI

我在使用QML画布方法渲染SVG图标时遇到问题。 基本上,QML画布忽略光栅化大小,并从其原始大小(在本例中为48x48px)开始绘制图像,并使用丑陋的锯齿效果将其放大

有没有人见过这一点,并可能想出了解决办法

请参阅以获取一个独立的示例。 这里我只复制QML代码和我看到的屏幕截图

从左边开始:

  • 原始SVG图标作为图像项(正确)
  • drawImage呈现的图像项相同(老实说,我希望这也是正确的,因为光栅化数据应该由Image提供)
  • SVG图标加载了中说明的过程,加载了loadImage和onImageLoaded
导入QtQuick 2.0

Rectangle
{
    width: 640
    height: 480

    Image
    {
        id: svgIcon
        source: "qrc:/qt_logo.svg"
        x: 10
        y: 100
        width: 180
        height: 200
        sourceSize: Qt.size(width, height)
    }

    Canvas
    {
        id: canvas
        anchors.fill: parent
        contextType: "2d"
        property string imagefile: "qrc:/qt_logo.svg"

        Component.onCompleted: context.loadImage(imagefile)

        onImageLoaded: requestPaint()

        onPaint:
        {
            context.drawImage(svgIcon, 200, 100, 180, 200)
            context.drawImage(imagefile, 400, 100, 180, 200)
        }
    }
}

我在QML中使用过SVG,性能非常差,而且升尺度和降尺度的质量不够好。如果您使用SVG来显示图标,我建议您使用字体而不是SVG图标,它非常快速和高质量。您可以将svg图标转换为字体字符,并将其打包为单个字体,并在QML中作为文本或标签元素使用,请参见

我已经将FontAwesome用于其他几个图标,但我也需要svg。此外,字体是单色的。