Да, използвайки 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();
}
}
}
Всъщност взех кода за това от това отговор, тъй като Canvas на Qt имплементира HTML5 Canvas API. Това прави много лесно намирането на примери в мрежата; просто потърсете "draw pie slice blah html5 canvas", например.
За откриването на мишката ще трябва да изчистите математическите си умения...
... или просто откраднете кода от тук. :)
Имайте предвид, че Canvas прерисува само когато е преоразмерен или когато requestPaint() се извиква, така че ако искате да промените цвета на парче в зависимост от позицията на мишката, ще трябва да извикате тази функция, за да видите промяната на цвета.
person
Mitch
schedule
25.09.2014