Qt6 QML 图像绘制与剪裁
在Qt6 QML中,画布组件(Canvas)支持从多种来源加载和绘制图像。为了在画布中使用图像,首先需要加载图像资源。这通常可以通过Component.onCompleted
事件处理器来完成,确保在组件初始化完成后加载图像。
例如,以下代码展示了如何在画布中加载并绘制一个图像:
onPaint: { var ctx = getContext("2d"); // 绘制图像 ctx.drawImage('assets/ball.png', 10, 10); // 保存当前上下文状态 ctx.save(); ctx.strokeStyle = '#ff2a68'; // 创建剪裁区域 ctx.beginPath(); ctx.moveTo(110, 10); ctx.lineTo(155, 10); ctx.lineTo(135, 55); ctx.closePath(); // 应用剪裁 ctx.clip(); // 使用剪裁区域绘制图像 ctx.drawImage('assets/ball.png', 100, 10); // 绘制路径轮廓 ctx.stroke(); // 恢复之前的上下文状态 ctx.restore(); } Component.onCompleted: { loadImage('assets/ball.png'); }
上述代码中的左图展示了在画布左上角(10, 10)位置绘制的球图像。右图则展示了应用了剪裁路径后的球图像。通过定义一个路径并调用clip()
方法,可以创建一个剪裁区域。之后的所有绘图操作都会受到该剪裁区域的影响,只有在该区域内绘制的内容才会显示。要取消剪裁,可以恢复之前保存的上下文状态或将剪裁区域设置为整个画布。
更多示例源码请参见示例源码下载。