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 相关文章推荐
javascript引导程序
Oct 26 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
Apr 02 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
Apr 15 Javascript
地址栏传递中文参数乱码在js里用escape转码
Aug 28 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
深入解析JavaScript中的数字对象与字符串对象
Oct 21 Javascript
Javascript必知必会(四)js类型转换
Jun 08 Javascript
Angular的自定义指令以及实例
Dec 26 Javascript
JS实现的五级联动菜单效果完整实例
Feb 23 Javascript
PHP 实现一种多文件上传的方法
Sep 20 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
Nov 24 Javascript
Vue前端项目部署IIS的实现
Jan 06 Javascript
如何在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
一个程序下载的管理程序(三)
2006/10/09 PHP
windows下开发并编译PHP扩展的方法
2011/03/18 PHP
php列出一个目录下的所有文件的代码
2012/10/09 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
MUI 上拉刷新/下拉加载功能实例代码
2017/04/13 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
Express之托管静态文件的方法
2018/06/01 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
详解Python文件修改的两种方式
2019/08/22 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
Python爬虫教程知识点总结
2020/10/19 Python
python3实现飞机大战
2020/11/29 Python
python复合条件下的字典排序
2020/12/18 Python
python中实现词云图的示例
2020/12/19 Python
python excel和yaml文件的读取封装
2021/01/12 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
大学生水文观测实习自我鉴定
2013/09/29 职场文书
酒店总经理工作职责
2013/12/13 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
社区党支部公开承诺书
2015/04/29 职场文书