首页 > 编程知识 正文

css圆圈扩散效果,canvas画圆环

时间:2023-05-04 13:40:08 阅读:168401 作者:3726

介绍

我在ECharts上看到过这个圆形扩散效果。 与css3相似。 我正好想在项目中使用那个。 but我又不想导入整个echart.js文件,最重要的是想理解其原理,所以自己动手。 本文分析了实现这一效果的两种方法。 先看看效果图吧。

实现原理

通过不断变化圆的半径大小,持续重叠,可以获得运动的效果。 在运动过程中,可以通过设定当前canvas的透明度context.globalAlpha=0.95使canvas上的圆逐渐透明直到0来获得此漫反射和渐变效果。

实现nqdzxc

1 .关键技术要点

context.globalAlpha=0.95; //设置主canvas的绘制透明度。

创建临时canvas以缓存主canas历史图像,并将其叠加在主canvas上。

2 .绘制过程

首先,写一下画圆的方法:

//画一个圆

var drawCircle=function (

context.beginPath (;

context.arc (150,100,radius,0,Math.PI * 2);

context.closePath (;

context.lineWidth=2; //线宽

context.stroke style=' rgba (250,250,50,1 ); //颜色

context.stroke (;

radius =0.5; //每帧半径增加0.5

//半径radius大于30时,重置为0

if(radius30 ) {

radius=0;

}

(;

接下来,创建临时的canvas来缓存主canvas的历史图像,设置主canvas的透明度context.globalAlpha=0.95 (键步),并在每次调用drawCircle方法时进行更新

核心代码如下所示。

//创建临时canvas以缓存主canvas历史图像

varbackcanvas=document.createelement (' canvas )、

back CTX=back canvas.get context (' 2d );

backCanvas.width=width;

backCanvas.height=height;

//设置主canvas的绘制透明度

context.globalAlpha=0.95;

//显示要绘制的图像并忽略临时canvas中已存在的图像

back CTX.globalcompositeoperation=' copy ';

var render=function

//1 .将主canvas的图像临时缓存在canvas中

backCTX.Drawimage(canvas,0,0,width,height );

//2 .清除主canvas的图像

context.clear rect (0,0,width,height );

//3 .在主canvas上画一个新圆

drawCircle (;

//4 .画出新的圆后,将虚拟canvas的图像描绘回主canvas

context.drawimage(backcanvas,0,0,width,height );

(;

实现方法2

与以前的方法相比,该方法更简单,使用了透明度逐渐减小直到0的原理,但这里不创建临时canvas,而是使用context.globalcompositeoperation属性值source-over和destination-destion

核心代码如下所示。

var render=function

//默认值为source-over

var prev=context.globalcompositeoperation;

仅显示canvas上原始图像的重叠部分

context.globalcompositeoperation=' destination-in ';

//设置主canvas的绘制透明度

context.globalAlpha=0.95;

//这一步骤的目的是使canvas上的图像透明

context.fillrect (0,0,width,height );

//在原图像上重叠新图像

context.globalcompositeoperation=prev;

//在主canvas上画一个新圆

drawCircle (;

(;

地图上的APP图标

这里采用了第二种方式。 我在百度地图上应用了扩散、渐变效果。 让我们看更多的demo

圆形扩散动画

运动轨迹动画

总结

nqdzxc,2具有类似的效果,但如果经常使用动画绘制和处理canvas,则建议使用第一种方法在临时canvas上缓存历史图像。 更有效率。

本文的前端(javascript )相关术语:javascript是什么? javascript下载javascript权威指南javascript基础教程javascript正则表达式javascript设计模式javascript高级编程非常熟悉javascript

主题:百度、

分页符: 12

转载请注明

正文标题: canvas动画——圆形扩散,运动轨迹

本站链接:

要共享,请单击:

CodeSecTeam转载的文章旨在通过其他媒体和其他官方网站传播更多信息,并不意味着本站赞同其观点和真实性并承担责任;

2 .转载的文章只表达了原始作者的观点,与本站无关。 其原创性及正文中记述的文字和内容尚未在本网站上得到证实。 本网站对该文及其全部或部分的内容、文字的真实性、完整性、及时性不作任何保证或承诺。

3 .本网站转载稿件如有著作权等问题,请作者及时与本网站联系,及时处理。

登录后,可以拥有收藏文章和关注作者的权限.

注册

登录

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。