是的,使用 Canvas (和Context2D):
import QtQuick 2.3
Rectangle {
width: 400
height: 400
Canvas {
anchors.fill: parent
onPaint: {
var ctx = getContext("2d");
ctx.reset();
var centreX = width / 2;
var centreY = height / 2;
ctx.beginPath();
ctx.fillStyle = "black";
ctx.moveTo(centreX, centreY);
ctx.arc(centreX, centreY, width / 4, 0, Math.PI * 0.5, false);
ctx.lineTo(centreX, centreY);
ctx.fill();
ctx.beginPath();
ctx.fillStyle = "red";
ctx.moveTo(centreX, centreY);
ctx.arc(centreX, centreY, width / 4, Math.PI * 0.5, Math.PI * 2, false);
ctx.lineTo(centreX, centreY);
ctx.fill();
}
}
}
实际上,我从这个答案中获取了代码,因为 Qt 的 Canvas 实现了 HTML5 Canvas API。这使得在网络上查找示例变得非常容易;例如,只需搜索“draw pie slice blah html5 canvas”。
对于鼠标检测,你必须刷掉你的数学技能......
...或者只是从这里窃取代码。:)
请注意,Canvas 仅在调整大小或调用requestPaint()时重新绘制,因此如果您想根据鼠标位置更改切片的颜色,则需要调用该函数以查看颜色变化。