如何在没有alpha堆栈的情况下在globalAlpha <1的画布上绘制多个元素?

用户431806

我想在画布上绘制不透明度为0.2的两个对象。

两项都部分重叠。如果它们重叠,则不透明度为0.4,而不重叠的部分为0.2。即画布100w,100h。

https://jsbin.com/wicigarinu/edit?js,输出

ctx.globalAlpha = 0.2;
ctx.beginPath();
ctx.arc(50, 50, 25, 0, 2*Math.PI, false);
ctx.fill();
ctx.closePath();

ctx.beginPath();
ctx.arc(65, 65, 20, 0, 2*Math.PI, false);
ctx.fill();
ctx.closePath();

我如何能够在同一位置上绘制,但是即使在发生1个以上填充的坐标上,也要保持最初设置的不透明度?

吉拉德

您可以在具有完全不透明性的辅助画布上进行绘制,然后复制到alpha <1的真实画布上。

这是一个基本的例子:

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');

//create helper canvas
const hCanvas = document.createElement('canvas');
const hCtx = hCanvas.getContext('2d');

//draw on helper canvas
hCtx.beginPath();
hCtx.arc(50, 50, 25, 0, 2*Math.PI, false);
hCtx.fill();
hCtx.closePath();

hCtx.beginPath();
hCtx.arc(65, 65, 20, 0, 2*Math.PI, false);
hCtx.fill();
hCtx.closePath();

//copy to real canvas with alpha < 1
ctx.globalAlpha = 0.2;
ctx.drawImage(hCanvas, 0, 0);
<canvas id="canvas"></canvas>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在没有可用数组的情况下在React中创建多个元素?

来自分类Dev

如何在画布元素上绘制视频?

来自分类Dev

如何在没有损失信息的情况下在python中绘制密度图?

来自分类Dev

如何在没有glBegin的情况下在OpenGL中绘制线

来自分类Dev

如何在没有关联的UI元素的情况下在iOS中创建序列

来自分类Dev

Angular:如何在没有事件的情况下在* ngFor DOM元素后面获取对象?

来自分类Dev

如何在没有共同子元素的情况下在YANG中建立列表模型?

来自分类Dev

如何在没有任何内联函数调用的情况下在单击时获取元素ID?

来自分类Dev

如何在没有根元素的情况下在GXT HTML布局容器中添加HTML?

来自分类Dev

如何在没有元素名称的情况下在 xpath 中显示文本

来自分类Dev

如何在没有错误的情况下在多个活动中加载导航视图?

来自分类Dev

tu如何在没有&&的情况下在一行中运行多个bash脚本

来自分类Dev

如何在没有return_sequences的情况下在keras中堆叠多个lstm?

来自分类Dev

如何在一个画布上启用绘制和删除多个元素?

来自分类Dev

如何在没有控件的情况下在video.js上暂停视频

来自分类Dev

如何在没有超时的情况下在Travis CI上安装某些软件?

来自分类Dev

如何在没有FTP的情况下在Google App Engine上上传/更新Wordpress主题?

来自分类Dev

如何在没有管理员权限的情况下在VSCode上检测git

来自分类Dev

如何在没有for循环的情况下在python列表/数组上迭代执行操作?

来自分类Dev

如何在没有sudo权限的情况下在CentOS上安装Node.js

来自分类Dev

如何在没有Internet连接的情况下在XP机器上安装.NET Framework 3.5?

来自分类Dev

如何在没有root访问权限的情况下在CentOS上安装Skype

来自分类Dev

如何在没有printf()的情况下在stdout上打印浮点数?

来自分类Dev

如何在没有Windows隐藏文件的情况下在Ubuntu上打开NTFS分区?

来自分类Dev

如何在没有流配置的情况下在远程节点上获取GridStreamer

来自分类Dev

如何在没有`SELECT`的情况下在oracle上打印字段类型

来自分类Dev

如何在没有电池的情况下在T460上更新Lenovo BIOS?

来自分类Dev

如何在没有root特权的情况下在CentOS上安装Python?

来自分类Dev

如何在没有Dev Mod的情况下在Chromebook上安装Ubuntu?

Related 相关文章

  1. 1

    如何在没有可用数组的情况下在React中创建多个元素?

  2. 2

    如何在画布元素上绘制视频?

  3. 3

    如何在没有损失信息的情况下在python中绘制密度图?

  4. 4

    如何在没有glBegin的情况下在OpenGL中绘制线

  5. 5

    如何在没有关联的UI元素的情况下在iOS中创建序列

  6. 6

    Angular:如何在没有事件的情况下在* ngFor DOM元素后面获取对象?

  7. 7

    如何在没有共同子元素的情况下在YANG中建立列表模型?

  8. 8

    如何在没有任何内联函数调用的情况下在单击时获取元素ID?

  9. 9

    如何在没有根元素的情况下在GXT HTML布局容器中添加HTML?

  10. 10

    如何在没有元素名称的情况下在 xpath 中显示文本

  11. 11

    如何在没有错误的情况下在多个活动中加载导航视图?

  12. 12

    tu如何在没有&&的情况下在一行中运行多个bash脚本

  13. 13

    如何在没有return_sequences的情况下在keras中堆叠多个lstm?

  14. 14

    如何在一个画布上启用绘制和删除多个元素?

  15. 15

    如何在没有控件的情况下在video.js上暂停视频

  16. 16

    如何在没有超时的情况下在Travis CI上安装某些软件?

  17. 17

    如何在没有FTP的情况下在Google App Engine上上传/更新Wordpress主题?

  18. 18

    如何在没有管理员权限的情况下在VSCode上检测git

  19. 19

    如何在没有for循环的情况下在python列表/数组上迭代执行操作?

  20. 20

    如何在没有sudo权限的情况下在CentOS上安装Node.js

  21. 21

    如何在没有Internet连接的情况下在XP机器上安装.NET Framework 3.5?

  22. 22

    如何在没有root访问权限的情况下在CentOS上安装Skype

  23. 23

    如何在没有printf()的情况下在stdout上打印浮点数?

  24. 24

    如何在没有Windows隐藏文件的情况下在Ubuntu上打开NTFS分区?

  25. 25

    如何在没有流配置的情况下在远程节点上获取GridStreamer

  26. 26

    如何在没有`SELECT`的情况下在oracle上打印字段类型

  27. 27

    如何在没有电池的情况下在T460上更新Lenovo BIOS?

  28. 28

    如何在没有root特权的情况下在CentOS上安装Python?

  29. 29

    如何在没有Dev Mod的情况下在Chromebook上安装Ubuntu?

热门标签

归档