以下のコードを参考にして、黒い円で表された連続した点をキャンバスに挿入することができます。コードの目的は、 に、それぞれの連続する点を赤い線分で結合することです。QMLキャンバスにセグメントを描画する
しかし、コードは私にのみ第一および第二の点は赤色セグメントによって接合されているこの
ように見えるキャンバスを与えます。他のポイントはセグメントで結合されていません。どうすれば修正できますか?ここ
はQMLコードはdocumentationによれば
import QtQuick 2.7
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window{
id: root
width: 640
height: 480
visible: true
Canvas {
id: mycanvas
width: 500
height: 500
function clear() {
var ctx = getContext("2d");
ctx.reset();
mycanvas.requestPaint();
}
Path {
id: myPath
startX: 0; startY: 100
PathLine { x: 400; y: 500 }
}
property var arrpoints : []
onPaint: {
var context = getContext("2d");
// Render all the points as small black-circles
context.strokeStyle = Qt.rgba(0, 1, 1, 0)
for(var i=0; i < arrpoints.length; i++){
var point= arrpoints[i]
context.ellipse(point["x"], point["y"], 10, 10)
}
context.fill()
context.stroke()
// Join successive points with red segments
for (var j=1 ; j < arrpoints.length ; j++){
var start = arrpoints[j-1]
var end = arrpoints[j]
context.beginPath();
context.lineWidth = 2;
context.moveTo(start["x"], start["y"]);
context.strokeStyle = "red"
context.lineTo(end["x"], end["y"]);
}
context.stroke();
}
MouseArea {
id: mymouse
anchors.fill: parent
onClicked: {
mycanvas.arrpoints.push({"x": mouseX, "y": mouseY})
mycanvas.requestPaint()
console.log(mycanvas.arrpoints)
}
}
}
Button {
text: "Clear Points"
anchors.top : mycanvas.bottom
onClicked: {
mycanvas.arrpoints.length = 0
mycanvas.clear()
console.log(mycanvas.arrpoints)
}
}
}//Window
ありがとうございます!しかし、私は質問があります。投稿したコードで、「クリアポイント」ボタンを押してもキャンバスはクリアされません。それがなぜあるのか教えていただけますか? – smilingbuddha