【发布时间】:2016-10-27 17:49:57
【问题描述】:
在下面的示例中,相同的 strokeStyle 会产生不同的颜色,根据线条的长度 (?) 而有所不同。
只有在 alpha
这种奇怪行为的原因是什么?有没有更好的方法来设置笔画的透明度,这样无论长度如何我都能得到相同的结果?
谢谢。
var c = document.getElementById('c1');
var ctx = c.getContext('2d');
ctx.fillStyle = '#FFFFFF';
ctx.fillRect(0, 0, 400, 400);
ctx.lineWidth = 10;
ctx.strokeStyle = 'rgba(0, 0, 255, 0.3)';
ctx.moveTo(10, 10);
ctx.lineTo(20, 10);
ctx.stroke();
ctx.moveTo(10, 30);
ctx.lineTo(40, 30);
ctx.stroke();
ctx.moveTo(10, 50);
ctx.lineTo(80, 50);
ctx.stroke();
ctx.moveTo(10, 70);
ctx.lineTo(160, 70);
ctx.stroke();
ctx.moveTo(10, 90);
ctx.lineTo(320, 90);
ctx.stroke();
#c1 {
border: 1px solid black;
}
<canvas width="330" height="100" id="c1">
</canvas>
【问题讨论】:
-
因为你只创建了一条路径,但是绘制了多次。要创建新路径,您需要在定义和绘制它之前调用
ctx.beginPath()。在这里,您的 parh 的最终状态也涵盖了所有第一个状态,因此透明度会降低。
标签: html canvas opacity alpha rgba