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 相关文章推荐
Js 弹出框口并返回值的两种常用方法
Dec 30 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
Jun 17 Javascript
js实现简单的网页换肤效果
Jan 18 Javascript
微信小程序 slider的简单实例
Apr 19 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
Jun 09 jQuery
ReactNative实现Toast的示例
Dec 31 Javascript
原生javascript AJAX 三级联动的实现代码
May 04 Javascript
vue如何实现自定义底部菜单栏
Jul 01 Javascript
初试vue-cli使用HBuilderx打包app的坑
Jul 17 Javascript
jQuery zTree插件使用简单教程
Aug 16 jQuery
原生JavaScript写出Tabs标签页的实例代码
Jul 20 Javascript
JavaScript实现动态生成表格
Aug 02 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
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
javascript 中__proto__和prototype详解
2014/11/25 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
uniapp实现横向滚动选择日期
2020/10/21 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
自我鉴定范文300字
2013/10/01 职场文书
装饰活动策划方案
2014/02/11 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
医药营销个人求职信
2014/04/12 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
陕西导游词
2015/02/04 职场文书
人力资源部岗位职责
2015/02/11 职场文书
Python time库的时间时钟处理
2021/05/02 Python