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 相关文章推荐
ExtJS 2.2.1的grid控件在ie6中的显示问题
May 04 Javascript
extjs 为某个事件设置拦截器
Jan 15 Javascript
基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
Sep 28 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
Aug 04 Javascript
使用JSON作为函数的参数的优缺点
Oct 27 Javascript
JS异步文件分片断点上传的实现思路
Dec 25 Javascript
axios学习教程全攻略
Mar 26 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
May 09 Javascript
layer弹窗插件操作方法详解
May 19 Javascript
详解vue 模版组件的三种用法
Jul 21 Javascript
使用node.js对音视频文件加密的实例代码
Aug 30 Javascript
vue3语法糖内的defineProps及defineEmits
Apr 14 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
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
浅析python的优势和不足之处
2018/11/20 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
软件测试有哪些?什么是配置项?
2012/02/12 面试题
大学毕业生个人自荐信范文
2014/01/08 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
天网工程实施方案
2014/03/26 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
支部书记四风对照材料
2014/08/28 职场文书
表扬通报怎么写
2015/01/16 职场文书
市场营销计划书范文
2015/01/16 职场文书
人民检察院起诉书
2015/05/20 职场文书
导游词之塘栖古镇
2019/12/04 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS