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 相关文章推荐
网页自动刷新,不产生嗒嗒声的一个解决方法
Mar 27 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
Mar 01 Javascript
JS 仿腾讯发表微博的效果代码
Dec 25 Javascript
js实现日期级联效果
Jan 23 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
Oct 17 Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 Javascript
JavaScript中利用for循环遍历数组
Jan 15 Javascript
微信小程序 利用css实现遮罩效果实例详解
Jan 21 Javascript
微信头像地址失效踩坑记附带解决方案
Sep 23 Javascript
js正则匹配多个全部数据问题
Dec 20 Javascript
JavaScript实现简单进度条效果
Mar 25 Javascript
JavaScript使用canvas绘制坐标和线
Apr 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 has encountered an Access Violation
2007/01/15 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
Jquery焦点图实例代码
2014/11/25 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
js随机生成网页背景颜色的方法
2015/02/26 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
环境科学专业研究生求职信
2013/10/02 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
2014年采购部工作总结
2014/11/20 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
领导干部考核评语
2015/01/04 职场文书
刑事申诉状范文
2015/05/20 职场文书
民政局未婚证明
2015/06/15 职场文书
周末问候语大全
2015/11/10 职场文书
小学大队干部竞选稿
2015/11/20 职场文书