HTML5 Canvas - 绘画应用程序的不透明度问题

标签 html canvas line paint stroke

我正在尝试使用 Canvas 编写绘图应用程序。 它的工作方式是在按下鼠标时通过连接线。 当线条不透明时,它运行良好,但当我更改 alpha 参数时,我遇到了问题。

我尝试了两种选择:

一个。路径从鼠标第一次按下时开始,到鼠标再次抬起时结束: 鼠标的每一次移动都会调用 stroke() 函数。因为线条是透明的,所以整个路径的开头会变得不透明而结尾不会,因为 stroke() 被调用了很多次,它一次又一次地绘制整个路径。

路径开始和结束鼠标的每一次移动: 这条线在整个过程中都是透明的,但是每条路径和路径之间的匹配点不太透明(因为它们是由两条线组成的)。所以整个路径并不稳固。

我获得好结果的唯一方法是仅当鼠标再次抬起时才调用 stroke() 。然后它很好地抚摸了整个路径,但在实际绘制时我什么也看不到。

我能做什么?

谢谢

最佳答案

我认为您最好的选择是创建第二个覆盖 Canvas ,将其定位(使用绝对定位)在您的主 Canvas 上。

在鼠标拖动期间,对于每个 mousemove 事件,使用 clearRect() 清除覆盖 Canvas ,然后绘制整个正在进行的笔画。

当您获得 mouseup 时,清除覆盖并将整个笔画绘制到主 Canvas 。

这是一个活生生的例子:

http://jsfiddle.net/rnNFB/1/

关于HTML5 Canvas - 绘画应用程序的不透明度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6634536/

相关文章:

javascript - Fabric Js Canvas 中剪辑部分中的多个对象

javascript - 通过修改Three.JS中 "Line"的属性,在canvas中绘制并定位 "Line"

javascript - 强制页面的一部分进入 IE7 兼容模式

html - 边距在 flexbox 内不起作用以将 child 带到 parent 之外

javascript - html5 canvas中圆弧的起始 Angular 和结束 Angular 是多少?

awk - Grep 访问多行,查找两个模式之间的所有单词

css - 视网膜 Safari 中带有渐变的奇怪水平线

javascript - 使用 Javascript 从 json stingrigy 值中获取 HTML 元素值

javascript - 在基于 ajax 的网站的动态加载内容上运行 javascript

javascript - 为什么我的游戏中没有出现任何框?