使用模式在 HTML5/JS 中绘制图像
Use a pattern to draw an image in HTML5/JS
我目前正在做一个项目,我似乎无法在谷歌上找到解决方案。我有一个 HTML 画布,我正在使用 ctx.drawImage() 来堆叠几个图像,我遇到的问题是我无法找到一种方法来专门绘制图像,使用这样的模式。无论如何,这很容易完成,还是我需要尝试在服务器端生成图像然后将其推送到客户端进行绘制?
我尝试绘制的图像顺序如下:
- 背景颜色
- 圆形蒙版
- 第一个链接的图像(这是我想用图案绘制的图像)
我试图保持前两层可见,只用模式文件覆盖第三层的不透明部分。所有图层都需要透明的部分都设置为透明。
更新以满足自此答案首次发布以来添加到问题中的其他条件:
您没有说明圆形蒙版的中心是填充的还是透明的,但以下内容假定中心是填充的:
- 绘制字母图像
- 将补偿模式更改为"
source-atop
"(请参阅下面的旧答案) - 绘制图案。您现在拥有字母形状的图案。
- 将补偿模式更改为"
destination-over
" - 绘制蒙版,这将最终"落后于"现有内容
- 使用相同的合成模式用背景色填充画布。
旧答案
当然,将第一个图像绘制到画布上,前提是它具有 alpha 通道。
然后将复合模式更改为source-atop
(也可以使用source-in
,但它将删除不会在新像素下结束的现有内容):
ctx.globalCompositeOperation = "source-atop";
然后在上面画第二个图像。要更改回正常模式:
ctx.globalCompositeOperation = "source-over";
相关文章:
- 用chart.js绘制条形图
- 如何用d3.js绘制折线图
- d3.js绘制具有固定布局的网络
- 如何使用Three.JS绘制n边区域
- 如何使用d3.js绘制带箭头的线条
- 如何使用P5.js绘制极坐标
- 使用crossfilter和dc.js绘制每一天的最小-最大值
- 我无法使用 gmaps.js 绘制路径
- 如何更改拉斐尔 JS 绘制的路径宽度和高度
- D3.js:绘制简单、可更新的折线图
- 传单.js绘制控件不能在整个地图窗口区域上移动
- 使用Raphael.js绘制双动画路径错误
- 使用实时测量fabric.js绘制线条
- 将json中的数据合并到一个新的数组中,并使用d3.js绘制形状
- 如何使用raphael.js绘制每个角都有控制点的多边形
- JS绘制矩形.可以'Don’不要重画一个旧的长方形
- 使用fabric.js绘制虚线
- 有没有一种方法可以用Js绘制svg元素的轮廓
- Pixi.js绘制下落的正方形
- 使用nvd3.js绘制具有堆叠条形图和折线图的图表