是的,可以使用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()时重新绘制。因此,如果您想根据鼠标位置更改切片的颜色,则需要调用该函数以查看颜色更改。