首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HTML5 -画布,图层,复制

HTML5 -画布,图层,复制
EN

Stack Overflow用户
提问于 2013-07-24 18:38:18
回答 2查看 422关注 0票数 0

因此,我想要实现的是用颜色/填充或clearRect绘制一个矩形,然后将其复制到我正在绘制的另一个画布层。此外,我想设置一个不透明的这一层的背景。

我尝试的是用fillStyle和fillRect设置背景,这样做很好。另外,我可以在没有背景的上画布上用fillRect绘制矩形,然后用drawImage将矩形复制到另一个。

问题是当我尝试用clearRect创建一个矩形并复制它时。正如我注意到的,我只能使用另一个矩形来clearRect。但是,我必须为上面的画布设置一个背景,这是可以的,但是当我把它复制到另一个画布时,它每次都变得越来越暗(当然……)

这怎么可能?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-24 20:53:52

当您使用alpha通道时,正如您已经注意到的那样,您将积累与alpha < 255一样的alpha通道值。唯一的办法“重置”这是开始新的说法。

这里有几个解决办法-

备选案文1

不要将任何东西从草图复制到主画布上,而是将所有的点和形状存储到一个二维数组或一个由形状对象组成的数组中,包括它的点、颜色、线宽等等。

当您需要更新主画布时,清除两个画布,然后将所有形状重新呈现到主画布上。

选项2

如果主画布上的所有形状都具有相同的不透明度,那么使用第三个屏幕外画布。把所有的东西都画到这个画布上--不透明(最后一个是重要的)。

更新主画布时,请在其上设置globalAlpha,然后将屏幕外画布绘制到其上。

票数 1
EN

Stack Overflow用户

发布于 2013-07-24 19:12:18

所以我们可能需要一些示例代码,因为我不能百分之百确定你想做什么.您使用两个画布对象,在顶部画布上绘图,并将其复制到底层画布.就像?:

代码语言:javascript
运行
复制
 ctx2.drawImage(canvas1,0,0);

然后清理上面的画布:

代码语言:javascript
运行
复制
 ctx1.clearRect(0,0,canvas1.width,canvas1.height);

再做一次抽签?你是想得到某种线索效果还是什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17842202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档