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