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 相关文章推荐
Js callBack 返回前一页的js方法
Nov 30 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
Sep 28 Javascript
JS实现的论坛Ajax打分效果完整实例
Oct 31 Javascript
基于jquery实现简单的手风琴特效
Nov 24 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
js省市县三级联动效果实例
Apr 15 Javascript
JavaScript必知必会(六) delete in instanceof
Jun 08 Javascript
vue日期组件 支持vue1.0和2.0
Jan 09 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
js实现关闭网页出现是否离开提示
Dec 07 Javascript
使用flow来规范javascript的变量类型
Sep 12 Javascript
vue 自定义的组件绑定点击事件
Apr 21 Vue.js
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
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
Python工程师面试必备25条知识点
2018/01/17 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
python常用数据重复项处理方法
2019/11/22 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
激励口号大全
2014/06/17 职场文书
2014年导购员工作总结
2014/11/18 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
SQL Server使用导出向导功能
2022/04/08 SQL Server