• 售前

  • 售后

热门帖子
入门百科

canvas多重阴影发光结果实现

[复制链接]
Jacqueline季 显示全部楼层 发表于 2021-8-14 14:48:32 |阅读模式 打印 上一主题 下一主题
前言

在一个项目中,客户提了一个发光的效果,效果图如下:


阴影

有的人可能会说,这个用阴影其实就可以实现。但是从图中可以看出,是一个比力强烈的发光效果。现实的应用过程中我们会发现用简朴阴影参数实现的效果很难达到这样强烈的发光效果。
好比
  1. ctx.shadowColor = 'rgba(255,0,0,1)';
  2.   ctx.shadowBlur =10;
  3.   ctx.shadowOffsetX = 10;
  4.   ctx.shadowOffsetY = 10;
  5.   ctx.fillStyle = 'rgba(0,0,255,1.0)';
  6.   ctx.fillRect(100,100,200,100);
复制代码

简朴的阴影效果下,shadowBlur 体现阴影半径。当阴影半径比力大的时候,阴影的扩散程度会比力大,但阴影的强烈度不敷。在阴影的半径比力小的时候,阴影的强烈度是够的,但阴影的扩散程度会比力小。
多重阴影

如何达到具有较强的阴影强度,又有较好的阴影扩散度呢?也就是实现这种比力强烈的发光效果。嗯,答案就是使用多重阴影效果。
所谓多重阴影效果,使用阴影效果对图形进行多次绘制,多次绘制的过程中,shadowBlur的值会不一样,这样可以形成多个阴影叠加的效果。
下面是一个简朴的示例,代码如下。
  1. ctx.shadowColor = 'rgba(255,255,0,1)';
  2.   ctx.shadowBlur = 20;
  3.   ctx.shadowOffsetX = 10100;
  4.   ctx.shadowOffsetY = 10100;
  5.   ctx.beginPath();
  6.   ctx.fillStyle = 'rgba(0,0,255,1.0)';
  7.   ctx.arc(-10000, -10000, 50, 0, Math.PI * 2);
  8.   ctx.fill();
  9.   ctx.shadowColor = 'rgba(255,0,0,1)';
  10.   ctx.shadowBlur = 20;
  11.   ctx.shadowOffsetX = 10100;
  12.   ctx.shadowOffsetY = 10100;
  13.   ctx.beginPath();
  14.   ctx.fillStyle = 'rgba(0,0,255,1.0)';
  15.   ctx.arc(-10000, -10000, 30, 0, Math.PI * 2);
  16.   ctx.fill();
复制代码
从代码中我们可以看出我们多次使用了阴影的绘制啊,最终的绘制效果如下图所示。

从图中可以看出, 阴影有较好的扩散程度,也有较好的强烈度。
下面是用多重阴影实现的文字霓虹灯效果,同样可以看出有较好的发光效果。

总结

可以看出要达到强烈的发光效果, 须要使用多重阴影功能。固然使用多种阴影也不是没有限制的, 因为阴影本身有很大的性能消耗。通过实验我们发现一样平常3~5次之间就可以大概达到较好的效果吧。
到此这篇关于canvas多重阴影发光效果实现的文章就介绍到这了,更多相关canvas多重阴影发光内容请搜索草根技能分享从前的文章或继承浏览下面的相关文章,渴望各人以后多多支持草根技能分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作