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 获取用户客户端操作系统版本
Aug 25 Javascript
Javascript面向对象设计一 工厂模式
Dec 20 Javascript
中国地区三级联动下拉菜单效果分析
Nov 15 Javascript
js函数返回多个返回值的示例代码
Nov 05 Javascript
JavaScript调用客户端的可执行文件(示例代码)
Nov 28 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
May 16 Javascript
security.js实现的RSA加密功能示例
Jun 06 Javascript
vue-cli监听组件加载完成的方法
Sep 07 Javascript
解决vue keep-alive 数据更新的问题
Sep 21 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
Oct 18 Javascript
vue + elementUI实现省市县三级联动的方法示例
Oct 29 Javascript
jQuery实现带进度条的轮播图
Sep 13 jQuery
如何在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
星际中的相关伤害
2020/03/04 星际争霸
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
php提取微信账单的有效信息
2018/10/01 PHP
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
简单介绍Python中的len()函数的使用
2015/04/07 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
Python OpenCV实现视频分帧
2019/06/01 Python
简单了解python的break、continue、pass
2019/07/08 Python
python 循环数据赋值实例
2019/12/02 Python
Python实现FLV视频拼接功能
2020/01/21 Python
Python bytes string相互转换过程解析
2020/03/05 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
天网面试题
2013/04/07 面试题
酒店管理专业毕业生推荐信
2013/11/10 职场文书
给导游的表扬信
2014/01/10 职场文书
师恩难忘教学反思
2014/04/27 职场文书
家庭贫困证明
2014/09/23 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
Java异常体系非正常停止和分类
2022/06/14 Java/Android