我正在创建一个绘图程序,女巫也应该使用半透明画笔。当我使用透明笔刷时,我会得到一些透明的笔触,直到我松开鼠标,女巫是最后的。如果我再画一个新的笔画,我的旧笔画会变得完全不透明,即使我没有遇到它们。该程序工作获取鼠标坐标,等待位置改变,然后绘制(和笔划)一条从第一个点到第二个点的线。我已经看到一些教程建议将所有路径存储在内存(数组)中,并在每次释放鼠标时再次绘制它,但由于内存消耗,我不确定。该程序是用 QML + javascript 编写的,但 canvas 的工作方式与 HTML5 中的相同。
提前感谢大家。
以下是上下文调用:
function pencilBehaviour() {
if (canvas.isPressed){
var ctx = canvas.getContext('2d')
if ((canvas.bufferX != -1) || (canvas.bufferY != -1)){
ctx.globalCompositeOperation = "source-atop"
ctx.moveTo(canvas.bufferX, canvas.bufferY)
ctx.lineTo(canvas.px, canvas.py)
ctx.globalAlpha = 0.4
ctx.lineCap = "round"
ctx.lineJoin = "round"
ctx.strokeStyle = "white"
ctx.lineWidth = 3
ctx.stroke()
console.log("pencil invoking canvas")
//Buffers are needed to draw a line from buffer to current position
canvas.bufferX = canvas.px
canvas.bufferY = canvas.py
}
else{
//Buffers are needed to draw a line from buffer to current position
canvas.bufferX = canvas.px
canvas.bufferY = canvas.py
}
}
}