javascript实现点击产生随机图形


Posted in Javascript onJanuary 25, 2021

本文实例为大家分享了javascript实现点击产生随机图形的具体代码,供大家参考,具体内容如下

点击产生随机图形

效果如下:

javascript实现点击产生随机图形

用javascript来实现

主要用canvas和随机函数完成各种图形

第一步

在HTML和CSS中创建出现图形的矩形和两个按钮。第一个按钮用来产生图形,第二个按钮用来清除产生的所有图形。

<style>
  *{
   margin: 0;
   padding: 0;
  }
  #canvas{
   border: solid 1px red;
   display: block;
   margin: 0 auto;
  }
  #father{
   width: 200px;
   margin:0 auto;
   
  }
  #btn{
   margin-right: 40px;
   cursor: pointer;
  }
  #cle{
   cursor: pointer;
  }
</style>
<body>
 <canvas id="canvas" width="600" height="600"></canvas>
 <div id="father">
  <input type="button" id="btn" value="点击生成">
  <input type="button" id="cle" value="点击清除">
 </div>
</body>

第二步

在javascript中分别创建用来随机颜色的函数,点击随机产生图形的函数,点击清除屏幕的函数。

var canvas=document.getElementById("canvas");
 var context=canvas.getContext("2d");
 var btn=document.getElementById("btn");
 var cle=document.getElementById("cle");

设置图形的随机颜色

function color(){
  var r=Math.floor(Math.random()*255);
  var g=Math.floor(Math.random()*255);
  var b=Math.floor(Math.random()*255);
  var a=Math.random();
  var bg="rgba("+r+","+g+","+b+","+a+")";
  return bg;
 }

设置点击按钮随机产生图形的函数,第一种实心和空心矩形,第二种实心和空心圆,第三种直线,它们的位置和大小分别写随机函数,再分别加上canvas代码,用来画图形,如context.beginPath()-context closePath()。

btn.onclick=function(){
  var random=Math.floor(Math.random()*3+1);
  if(random==1){
   var rectr=Math.floor(Math.random()*2);
   var rectx=Math.floor(Math.random()*600);
   var recty=Math.floor(Math.random()*600);
   var rectwidth=Math.floor(Math.random()*200+200);
   var rectheight=Math.floor(Math.random()*200+200);
   if(rectr== 0){
    context.beginPath();
    context.strokeStyle=color();
    context.strokeRect(rectx,recty,rectwidth,rectheight)
    context.closePath();
   }
   else {
    context.beginPath();
    context.fillStyle=color();
    context.fillRect(rectx,recty,rectwidth,rectheight);
    context.closePath();
   }
  }
  else if(random == 2){
   var arcr=Math.floor(Math.random()*2);
   var arcx=Math.floor(Math.random()*600);
   var arcy=Math.floor(Math.random()*600);
   var arcr=Math.floor(Math.random()*300);
   if(arcr==0){
    context.beginPath();
    context.strokeStyle=color();
    context.arc(arcx,arcy,arcr,0,2*Math.PI,false);
    context.stroke();
    context.closePath();
   }
  
   else{
    context.beginPath();
    context.fillStyle=color();
    context.arc(arcx,arcy,arcr,0,2*Math.PI,false);
    context.fill();
    context.closePath();
   }
  }
  else if(random==3){
   var movex=Math.floor(Math.random()*600);
   var movey=Math.floor(Math.random()*600);
   var linex=Math.floor(Math.random()*600);
   var liney=Math.floor(Math.random()*600);
   var linew=Math.floor(Math.random()*20);
   context.beginPath();
   context.strokeStyle=color();
   context.moveTo(movex,movey);
   context.lineTo(linex,liney);
   context.lineWidth=linew;
   context.stroke();
   context.closePath();
  }
}

第三步

最后创建点击清除屏幕的按钮函数,根据创建的屏幕大小,在canvas中添加 context.clearRect(0,0,600,600);可实现清除屏幕。

cle.onclick=function(){
  context.beginPath();
  context.clearRect(0,0,600,600);
  context.closePath();
 }

点击产生随机图形的效果完成了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
异步加载script的代码
Jan 12 Javascript
Javascript实现页面跳转的几种方式分享
Oct 26 Javascript
jQuery中change事件用法实例
Dec 26 Javascript
jQuery实现炫酷的鼠标轨迹特效
Feb 01 Javascript
AngularJS初始化静态模板详解
Jan 14 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
Angular4实现动态添加删除表单输入框功能
Aug 11 Javascript
JavaScript实现左侧菜单效果
Dec 14 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
Apr 08 Javascript
js Array.slice的8种不同用法示例
Jul 10 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 #Vue.js
json.stringify()与json.parse()的区别以及用处
Jan 25 #Javascript
使用vue3重构拼图游戏的实现示例
Jan 25 #Vue.js
ReactRouter的实现方法
Jan 25 #Javascript
Javascript中的奇葩知识,你知道吗?
Jan 25 #Javascript
vue 计算属性和侦听器的使用小结
Jan 25 #Vue.js
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
Jan 25 #Javascript
You might like
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
jquery选择器简述
2015/08/31 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
原生js轮播特效
2017/05/18 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
介绍一下Linux中的链接
2016/06/05 面试题
加拿大留学自荐信
2014/01/28 职场文书
房产委托公证书样本
2014/04/04 职场文书
典型事迹材料范文
2014/12/29 职场文书
大学生入党自传2015
2015/06/26 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android