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 相关文章推荐
caller和callee的区别介绍及演示结果
Mar 10 Javascript
JavaScript设计模式之单件模式介绍
Dec 28 Javascript
浅谈javascript的分号的使用
May 12 Javascript
AngularJS实现页面定时刷新
Mar 14 Javascript
JavaScript实现移动端轮播效果
Jun 06 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
vue.js实现数据动态响应 Vue.set的简单应用
Jun 15 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 Javascript
Vue数据双向绑定原理及简单实现方法
May 18 Javascript
vue实现拖拽的简单案例 不超出可视区域
Jul 25 Javascript
Vue请求java服务端并返回数据代码实例
Nov 28 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 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读取csv文件内容的详解
2013/06/18 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Windows下PyMongo下载及安装教程
2015/04/27 Python
python解析基于xml格式的日志文件
2017/02/25 Python
python+selenium+autoit实现文件上传功能
2017/08/23 Python
python生成excel的实例代码
2017/11/08 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
如何开发一个JQuery插件
2016/07/28 面试题
户外婚礼策划方案
2014/02/08 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
导游词之太湖
2019/10/08 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
python非标准时间的转换
2021/07/25 Python
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏