Canvas径向渐变createRadialGradient的各种取值研究
来源:互联网 发布:淘宝手机端怎么改评价 编辑:程序博客网 时间:2024/05/18 00:32
首先说下createRadialGradient,createRadialGradient是canvas创建发射渐变的一个方法,它的形参是这样子的:
createLinearGradient(xStart,yStart,radiusStart,xEnd,yEnd,radiusEnd)
前三个参数是起始圆(cycle1)的x、y、半径,后三个是终点圆(cycle2)的x、y、半径。其它介绍就不多说了,可以看看w3school的介绍。
于是我们在想,cycle1 > cycle2会怎么样了?cycle1==cycle2有会有什么结果呢?
靠猜是没用的,对码农来说,代码才是王道。嗯,看看实验代码:
canvas=document.getElementById(
'canvas'
);
ctx=canvas.getContext(
'2d'
);
var
cycle1={
x:150,
y:150,
r:25
}
var
cycle2={
x:250,
y:250,
r:50
}
ctx.beginPath();
ctx.arc(cycle1.x,cycle1.y,cycle1.r,0,Math.PI*2,
false
);
ctx.stroke();
ctx.beginPath();
ctx.arc(cycle2.x,cycle2.y,cycle2.r,0,Math.PI*2,
false
);
ctx.stroke();
var
gr=ctx.createRadialGradient(cycle1.x,cycle1.y,cycle1.r,cycle2.x,cycle2.y,cycle2.r);
gr.addColorStop(0,
'rgba(255,0,0,0.75)'
);
gr.addColorStop(0.5,
'rgba(0,255,0,0.75)'
);
gr.addColorStop(1,
'rgba(0,0,255,0.75)'
);
ctx.fillStyle=gr;
ctx.fillRect(0,0,500,500);
诶,这是个苦力活,每次给cycle1和cycle2取不同的值,把结果截图并对比。
所得结果如下,为了比较好的区别,给两个圆的位置的画了边框,并用1标识cycle1,2标识cycle2。
1. cycle1 < cycle2 + cycle1在cycle2里面+ cycle1跟cycle2的圆心重合
2. cycle1 < cycle2 + cycle1在cycle2里面+cycle1跟cycle2的圆心不重合
3. cycle1 > cycle2 + cycle2在cycle1里面+cycle1跟cycle2的圆心不重合
4. cycle1 < cycle2 + cycle1跟cycle2相离
5. cycle1 > cycle2 + cycle1跟cycle2相离
6. cycle1 == cycle2 + cycle1跟cycle2相离
7. cycle1 == cycle2 + cycle1跟cycle2相交
结论
其它情况就不一一列举了,这里已经足够说明问题了。其中两个圆相离的情况得到的渐变图案很神奇。嗯,然后得到了个不算结论的结论——createRadialGradient实现的线性渐变的原理是:发生渐变的区域是,cycle1上的点到cycle2上的点所连成区域,所以当两个圆相离的时候,会形成放射状的扇形。可能还是有点难理解,把两个圆放到三维的场景下,就容易看懂了。
转自:http://imatlas.com/posts/canvas-createradialgradient/
- Canvas径向渐变createRadialGradient的各种取值研究
- canvas-径向渐变
- canvas径向渐变
- Html5学习------canvas绘制径向渐变图形
- html5中canvas径向渐变(发散)
- html5 canvas学习--绘制径向渐变
- canvas之createRadialGradient
- Css 径向渐变的使用
- CSS3的线性渐变 和 径向渐变。
- 径向渐变
- HTML5教程实例-用Canvas制作径向渐变图形
- Html5系列(十八) canvas 径向渐变2
- html5 canvas实例 绘制变形图形 径向渐变
- CSS渐变效果的使用,线性渐变、径向渐变。
- CSS3径向渐变色的一种
- CSS3快速上手之8:径向渐变+各种重复
- 渐变:线性渐变、径向渐变
- canvas基础学习(二)-填充样式(线性渐变和径向渐变)
- cocos2dx lua http请求获取网络数据:
- Android 自定义View (四) 视频音量调控
- 操作系统(二)进程管理
- 上传代码资源时代码瘦身
- 第七周项目6- 停车场模拟
- Canvas径向渐变createRadialGradient的各种取值研究
- 数据库设计三大范式
- 【无人驾驶系列】光学雷达(LiDAR)在无人驾驶技术中的应用
- 数据库分页sql
- iOS10新特性
- iOS录音功能
- 技术类知识-资料汇总
- 应用开发进阶必经之路之性能优化
- 20161014 小知识点总结