JavaScript html5 canvas画布中删除一个块区域的方法


Posted in Javascript onJanuary 26, 2016

本文实例讲述了html5 canvas画布中删除一个块区域的方法。分享给大家供大家参考,具体如下:

运行效果截图如下:

JavaScript html5 canvas画布中删除一个块区域的方法

附:图中,黑色小方块即为删除掉的块区域

具体代码如下:

index.html:

<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
  <title>canvas中删除一块区域</title>
  <style type="text/css">
   #canvas {
    background:black; margin-top:100px; margin-left:200px;
   }
  </style>
 </head>
 <body>
  <canvas id="canvas" width="500px" height="500px" ></canvas>
 </body>
 <script type="text/javascript" src="canvas.js"></script>
 <script type="text/javascript">
  cache = {};
  var offsetX = 50,
   offsetY = 20;
  cache.context = dyl.createContext('canvas');
  dyl.rect(dyl.createColor(), 150, 150, 200, 200, 0.5);
  for(var i=0; i<10; i++) {
   dyl.clearRect(150 + i*20, 150 + i*20, 20, 20);
  }
 </script>
</html>

canvas.js:

(function() {
  var dyl = {cache: {}};
  dyl.setContext = function(context) {
    dyl.cache._context = context;
    return context;
  };
  dyl.getDom = function(id) {
    return document.getElementById(id);
  };
  dyl._getContext = function() {
    return dyl.cache._context;
  };
  dyl.save = function() {
    var context = dyl._getContext();
    context ? context.save() : void(0);
  };
  dyl.restore = function() {
    var context = dyl._getContext();
    context ? context.restore() : void(0);
  };
  dyl.createContext = function(canvasID) {
    var canvas = this.getDom(canvasID);
    if(!canvas) {
      return null;
    }
    return dyl.setContext(canvas.getContext("2d"));
  };
  dyl.createColor = function() {
    var color = "rgb(";
    color += Math.round(Math.random()*255);
    color += ",";
    color += Math.round(Math.random()*255);
    color += ",";
    color += Math.round(Math.random()*255);
    color += ")";
    return color;
  };
  dyl.addImg = function(img, x, y) {
    var context = dyl._getContext();
    if(!img || !context) {
      return;
    }
    if(typeof img === "string") {
      var oImg = new Image();
      oImg.src = img;
      oImg.onload = function() {
        context.drawImage(oImg, x, y);
      }
      return;
    } 
    context.drawImage(img, x, y);
  };
  dyl.rect = function(color, x, y, width, height, alpha) {
    var context = dyl._getContext();
    if(!context) {
      return;
    }
    context.save();
    context.fillStyle = color;
    context.globalAlpha = alpha ? alpha : 1;
    context.fillRect(x, y, width, height);
    context.restore();
  };
  dyl.circle = function(color, x, y, r, alpha) {
    var context = dyl._getContext();
    context.save();
    context.fillStyle = color;
    context.beginPath();
    context.globalAlpha = alpha ? alpha : 1;
    context.arc(x, y, r, 0, 2*Math.PI);
    context.fill();
    context.stroke();
  };
  dyl.clearRect = function(x, y, width, height) {
    var context = dyl._getContext();
    if(!context) {
      return;
    }
    context.clearRect(x, y, width, height);
  };
  dyl.scale = function(x, y) {
    var context = dyl._getContext();
    if(!context) {
      return;
    }
    x = x ? x : 1;
    y = y ? y : 1;
    context.scale(x, y);
  };
  if(!window.dyl) {
    window.dyl = dyl;
  }
})();

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
window.open的功能全解析
Oct 10 Javascript
发布一个基于javascript的动画类 Fx.js
Nov 05 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
Jun 11 Javascript
Function.prototype.call.apply结合用法分析示例
Jul 03 Javascript
禁止空格提交表单的js代码
Nov 17 Javascript
页面装载js及性能分析方法介绍
Mar 21 Javascript
jquery仿搜索自动联想功能代码
May 23 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
Jan 13 Javascript
详解JavaScript数组过滤相同元素的5种方法
May 23 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
vue中axios请求的封装实例代码
Mar 23 Javascript
JavaScript动画实例之粒子文本的实现方法详解
Jul 28 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
Jan 26 #Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
Jan 26 #Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
Jan 26 #Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
Jan 26 #Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
Jan 26 #Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
Jan 26 #Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
Jan 26 #Javascript
You might like
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
JavaScript浏览器选项卡效果
2010/08/25 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
kali中python版本的切换方法
2019/07/11 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
学校节能宣传周活动总结
2014/07/09 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
优秀员工推荐材料
2014/12/20 职场文书
教代会开幕词
2015/01/28 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js