JavaScript+html5 canvas绘制的小人效果


Posted in Javascript onJanuary 27, 2016

本文实例讲述了JavaScript+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(), 60 + offsetX, 0 + offsetY, 185, 100);
  dyl.rect(dyl.createColor(), 100 + offsetX, 100 + offsetY, 100, 50);
  dyl.rect(dyl.createColor(), 20 + offsetX, 150 + offsetY, 260, 200);
  dyl.rect(dyl.createColor(), 80 + offsetX, 350 + offsetY, 30, 110);
  dyl.rect(dyl.createColor(), 190 + offsetX, 350 + offsetY, 30, 110);
  dyl.circle(dyl.createColor(), 115 + offsetX, 55, 20);
  dyl.circle(dyl.createColor(), 190 + offsetX, 55, 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) {
    var context = dyl._getContext();
    if(!context) {
      return;
    }
    context.fillStyle = color;
    context.fillRect(x, y, width, height);
  };
  dyl.circle = function(color, x, y, r) {
    var context = dyl._getContext();
    context.save();
    context.fillStyle = color;
    context.beginPath();
    context.arc(x, y, r, 0, 2*Math.PI);
    context.fill();
    context.stroke();
  };
  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 相关文章推荐
jQuery Clone Bug解决代码
Dec 22 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
Aug 28 Javascript
JavaScript获取多个数组的交集简单实例
Nov 11 Javascript
node.js中的emitter.emit方法使用说明
Dec 10 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
js实现点击获取验证码倒计时效果
Jan 28 Javascript
原生js实现弹出层登录拖拽功能
Dec 05 Javascript
javascript cookie的基本操作(添加和删除)
Jul 24 Javascript
JS实现显示当前日期的实例代码
Jul 03 Javascript
cdn模式下vue的基本用法详解
Oct 07 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
Oct 29 Javascript
Vue2.0 实现页面缓存和不缓存的方式
Nov 12 Javascript
jquery ajax分页插件的简单实现
Jan 27 #Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
Jan 27 #Javascript
APP中javascript+css3实现下拉刷新效果
Jan 27 #Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 #Javascript
jQuery Easyui实现左右布局
Jan 26 #Javascript
AngualrJS中的Directive制作一个菜单
Jan 26 #Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 #Javascript
You might like
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
php学习笔记之 函数声明
2011/06/09 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
php微信公众号开发之简答题
2018/10/20 PHP
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
javascript实现下雨效果
2017/03/27 Javascript
Vue响应式原理详解
2017/04/18 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
Python中的字典遍历备忘
2015/01/17 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
Python测试线程应用程序过程解析
2019/12/31 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
硕士研究生自我鉴定范文
2013/12/27 职场文书
法制报告会主持词
2014/04/02 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
python代码实现备忘录案例讲解
2021/07/26 Python
python实现局部图像放大
2021/11/17 Python