基于html5绘制圆形多角图案


Posted in HTML / CSS onApril 21, 2016

先看看最简单的效果图:

基于html5绘制圆形多角图案

代码如下:

JavaScript Code复制内容到剪贴板
  1. var canvas = document.getElementById('my'), ctx = canvas.getContext('2d');   
  2. setInterval(

    function(){   
  3. ctx.clearRect(0,0,400,400);   

  4. ctx.save();   

  5.   ctx.translate(200,200);   

  6. var ci =90, pi = Math.PI / ci, x1 = 100, y1 =0, x2 =0, y2 =0, x3 =0, y3 =0;   
  7. ctx.beginPath();   

  8. for(var i = ci *2; i >0; i--){   
  9.   

    ctx.rotate(pi);   

  10. ctx.moveTo(x1,y1);   

  11. y2 = x1 * Math.sin(pi);   

  12. x2 = x1 * Math.cos(pi);   

  13. x3 = (x1 - x2) /2+ x2 +10+ Math.random() *20;   

  14. y3 = y2 /2;   

  15. ctx.lineTo(x3,y3);   

  16. ctx.lineTo(x2,y2);   

  17. }   

  18.   ctx.stroke();   

  19. ctx.restore();   

  20. },100);  

在上面多角形的基础上进一步之后为:

基于html5绘制圆形多角图案

代码如下:

JavaScript Code复制内容到剪贴板
  1. var canvas = document.getElementById('my'), ctx = canvas.getContext('2d'), r =10;   
  2.   

    setInterval(

    function(){   
  3.   

    ctx.clearRect(0,0,400,400);   

  4.   

    ctx.save();   

  5.  

     ctx.translate(200,200);   

  6.    var grad = ctx.createRadialGradient(0,0,0,0,0,r+20);   
  7.  

     grad.addColorStop(0.2,

    'white');   
  8.  

     grad.addColorStop(0.7,

    'yellow');   
  9.     grad.addColorStop(0.8,

    'orange');   
  10.  

     ctx.beginPath();   

  11.   ctx.fillStyle = grad;   

  12.   ctx.arc(0,0,r,0,Math.PI*2,

    true);   
  13.   ctx.fill();   

  14. var ci =90, pi = Math.PI / ci, x2 =0, y2 =0, x3 =0, y3 =0;   
  15.  

     x1 =100;   

  16.   

    y1 =0;   

  17.   

    ctx.beginPath();   

  18.    for(var i = ci *2; i >0; i--){   
  19.   

    ctx.rotate(pi);   

  20.   

    ctx.moveTo(r,0);   

  21.   

    y2 = r * Math.sin(pi);   

  22.   

    x2 = r * Math.cos(pi);   

  23.   
  24.   

    x3 = (r - x2) /2+ x2 +10+ Math.random() *20;   

  25.   

    y3 = y2 /2;   

  26.   
  27.   

    ctx.lineTo(x3,y3);   

  28.   

    ctx.lineTo(x2,y2);   

  29.   

    }   

  30.   

    ctx.fill();   

  31.   

    ctx.restore();   

  32.   

    r <=100&& (r +=2);   

  33.  

    },100);   

  34.   

以上就是本文的全部内容,希望对大家的学习有所帮助。

HTML / CSS 相关文章推荐
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
Jun 06 HTML / CSS
CSS去掉A标签(链接)虚线框的方法
Apr 01 HTML / CSS
详解CSS3中@media的实际使用
Aug 04 HTML / CSS
CSS3实现伪类hover离开时平滑过渡效果示例
Aug 10 HTML / CSS
突袭HTML5之Javascript API扩展3—本地存储全新体验
Jan 31 HTML / CSS
Html5大文件断点续传实现方法
Dec 05 HTML / CSS
html5将图片转换成base64的实例代码
Sep 21 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
Dec 29 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
Jan 29 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
Mar 17 HTML / CSS
前端H5 Video常见使用场景简介
Aug 21 HTML / CSS
几款流行的HTML5 UI框架比较(小结)
Apr 08 HTML / CSS
浅析border-radius如何兼容IE
Apr 19 #HTML / CSS
如何利用input事件来监听移动端的输入
Apr 15 #HTML / CSS
HTML5移动端开发中的Viewport标签及相关CSS用法解析
Apr 15 #HTML / CSS
整理HTML5移动端开发的常用触摸事件
Apr 15 #HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
Apr 05 #HTML / CSS
移动端HTML5实现文件上传功能【附代码】
Mar 25 #HTML / CSS
HTML5触摸事件演化tap事件介绍
Mar 25 #HTML / CSS
You might like
PHP多个文件上传到服务器实例
2014/10/29 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
Javascript事件实例详解
2013/11/06 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
python实现计算倒数的方法
2015/07/11 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python 函数返回值的示例代码
2019/03/11 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
python 获取字典键值对的实现
2020/11/12 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
25道Java面试题集合
2013/05/21 面试题
夜大毕业生自我评价分享
2013/11/10 职场文书
四年的个人工作自我评价
2013/12/10 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
数学教师个人工作总结
2015/02/06 职场文书
山楂树之恋观后感
2015/06/11 职场文书
Go语言中break label与goto label的区别
2021/04/28 Golang
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python