在画布中,一笔的 alpha 值在另一笔画之后丢失



我正在创建一个绘图程序女巫也应该使用半透明的画笔。当我使用透明画笔时,我最终会得到一些透明的笔触,女巫是最后的,直到我释放鼠标。如果我再次绘制新笔触,即使我没有遇到它们,我的旧笔触也会变得完全不透明。该程序获取鼠标坐标,等待位置更改,然后绘制(和笔划)一条从第一个点到第二个点的线。我已经看到一些教程建议将所有路径存储在内存(数组)中,并在每次鼠标发布时再次绘制它,但由于内存消耗,我不确定。该程序是用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
        }
    }
}

没有代码很难知道,但这里有一个猜测......

确保所有新笔画都以 context.beginPath() 开头,这样上下文就不会"记住"您以前的笔画。

相关内容

  • 没有找到相关文章

最新更新