javascript+canvas制作九宫格小程序


Posted in Javascript onDecember 28, 2014

js核心代码

/*

 *canvasid:html canvas标签id

 *imageid:html img 标签id

 *gridcountX:x轴图片分割个数

 *gridcountY:y轴图片分割个数

 *gridspace:宫格空隙

 *offsetX:x*y宫格相对canvas(0,0)X坐标偏移量

 **offsetX:x*y宫格相对canvas(0,0)Y坐标偏移量

 *isanimat:是否启用动画显示

 */

function ImageGrid(canvasid, imageid, gridcountX, gridcountY, gridspace, offsetX, offsetY, isanimat) {

    var image = new Image();

    var g = document.getElementById(canvasid).getContext("2d");

    var img=document.getElementById(imageid);

    image.src=img.getAttribute("src");

    g.drawImage(image, 0, 0);

    var imagedata = g.getImageData(0, 0, image.width, image.height);

    var grid_width = imagedata.width / gridcountX;

    var grid_height = imagedata.height / gridcountY;

    //动画

    if (isanimat) {

        var x = 0,

            y = 0;

        var inter = setInterval(function() {

            g.putImageData(imagedata, gridspace * x + offsetX, gridspace * y + offsetY, grid_width * x, grid_height * y, grid_width, grid_height);

            x < gridcountX ? x++ : x = 0;

            if (x == 0) {

                y < gridcountY ? y++ : y = 0;

            }

        }, 200);

        y == gridcountY ? clearInterval(inter) : null;

    } else { //非动画

        for (var y = 0; y < gridcountY; y++) {

            for (var x = 0; x < gridcountX; x++) {

                g.putImageData(imagedata, gridspace * x + offsetX, gridspace * y + offsetY, grid_width * x, grid_height * y, grid_width, grid_height);

            }

        }

    }

}

html代码

<canvas id="canvas1" width="900px" height="550px">Canvas demo</canvas>

 <img id="image1" style="display:none" src="//img.jbzj.com/file_images/article/201412/2014122894620636.jpg"/>

使用方法:

//eg...

ImageGrid("canvas1", "image1", 3, 3, 2, 220, 0, true); //3*3

ImageGrid("canvas1", "image1", 4, 4, 2, 440, 0, true); //4*4

ImageGrid("canvas1", "image1", 3, 4, 2, 660, 0, false); //3*4

代码很简洁,效果却非常炫酷,小伙伴们学会了吗?

Javascript 相关文章推荐
JavaScript 乱码问题
Aug 06 Javascript
javaScript 关闭浏览器 (不弹出提示框)
Jan 31 Javascript
JS 修改URL参数(实现代码)
Jul 08 Javascript
javascript:void(0)是什么意思示例介绍
Nov 17 Javascript
javascript比较两个日期相差天数的方法
Jul 24 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
May 17 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
Jul 31 Javascript
微信小程序实现YDUI的ScrollTab组件
Feb 02 Javascript
Vue CLI3 开启gzip压缩文件的方式
Sep 30 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
Vue 组件的挂载与父子组件的传值实例
Sep 02 Javascript
js调用网络摄像头的方法
Dec 05 Javascript
JavaScript设计模式之装饰者模式介绍
Dec 28 #Javascript
浅谈Javascript Base64 加密解密
Dec 28 #Javascript
JavaScript设计模式之代理模式介绍
Dec 28 #Javascript
JavaScript设计模式之外观模式介绍
Dec 28 #Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 #Javascript
jQuery中removeData()方法用法实例
Dec 27 #Javascript
jQuery中data()方法用法实例
Dec 27 #Javascript
You might like
实现“上一页”和“下一页按钮
2006/10/09 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
PHP 处理图片的类实现代码
2009/10/23 PHP
PHP 读取文件内容代码(txt,js等)
2009/12/06 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
JavaScript中的Location地址对象
2008/01/16 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
基于python的列表list和集合set操作
2019/11/24 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
教研活动总结
2014/04/28 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
公司出纳岗位职责
2015/03/31 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python