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中的事件
Sep 23 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
Jun 24 Javascript
PHP PDO操作总结
Nov 17 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
Aug 07 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
Aug 16 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
Sep 13 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
Nov 06 Javascript
vue中v-show和v-if的异同及v-show用法
Jun 06 Javascript
如何实现iframe父子传参通信
Feb 05 Javascript
通过实例解析vuejs如何实现调试代码
Jul 16 Javascript
查找Vue中下标的操作(some和findindex)
Aug 12 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
Dec 09 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
php中的静态变量的基本用法
2014/03/20 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
模仿jQuery each函数的链式调用
2009/07/22 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
js对象与打印对象分析比较
2013/04/23 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
Python深入学习之装饰器
2014/08/31 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
django框架auth模块用法实例详解
2019/12/10 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
python 如何在测试中使用 Mock
2021/03/01 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
《李广射虎》教学反思
2014/04/27 职场文书
出差报告怎么写
2014/11/06 职场文书
投标邀请书范本
2015/02/02 职场文书
清洁员岗位职责
2015/02/15 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书