Html5 Canvas学习之路(五)

箕水豹
• 阅读 1715

Canvas 图像(上)


Canvas 图像API可以加载图像数据,然后直接将图像应用到画布上。还可以裁切、拼贴图像数据,以显示用户需要的部分。此外,Canvas还提供了像素数据的存储功能,这样就能对其进行操作并且重绘到画布上。

1.图像基础

Canvas API提供对DOM定义的Image对象类型,在javascript中定义图像,创建JavaScript的方法: var image = new Image();,然后设置图像的源文件,只需要将URL指定给新建的Image对象的src属性即可。代码在调用图像之前,必须确认其已正确加载并且准备就绪。为此可以建立一个事件监听器,当图像的load事件触发时立即启动。

一旦图片加载完成,有多种方法可以将其显示在屏幕上。Canvas提供了一个如下方法来将图像数据显示到画布上:

  • drawImage(Image,sx,sy,sw,sh,dx,dy,dw,dh);

Image代表图片对象,sx,sy代表开始复制源图像上的“源位置”。sw和sh代表从(sx,sy)处开始取的矩形大小,dx和dx代表绘制到画布上的位置,dw,dh代表绘制到画布上的图像大小。
以下代码展示了在画布上绘制图片的方法:

    var image = new Image();
    image.addEventListener('load',eventImageLoaded,false);
    image.src = 'img/1945.png';
    function eventImageLoaded() {
        context.drawImage(image,100,100,32,32,100,100,32,32);
    }
   

2.帧式动画

帧式动画是指一项类似的现代技术,通过绘制每一个大小相同的帧来模拟动画。Canvas 可以利用drawImage()函数以及两个拼版来做动画。

需要创建一个count变量来作为计数器,并且还要创建一个计时循环。

代码示例如下:

    var count= 20;

    var image = new Image();
    image.addEventListener('load',eventImageLoaded,false);
    image.src = 'img/timg.jpg';
    function eventImageLoaded() {
        StartUp();
    }
    function StartUp() {
        setInterval(drawScreen, 100);
    }

    drawScreen();
    function drawScreen() {


        context.lineWidth = 5;
        context.strokeRect(0,0,theCanvas.width,theCanvas.height);

        context.drawImage(image,count,20,135,80,100,100,135,90);
        count += 135;
        console.log(count);
        if (count > 587){
            count = 20;
        }


    }

然后可以生成这样一个动画:

Html5 Canvas学习之路(五)

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
3年前
手把手教你使用CanvasAPI打造一款拼图游戏
一、canvas简介1.canvas是HTML5提供的一种新标签,双标签;2.HTML5 canvas标签元素用于图形的绘制,通过脚本(通常是JavaScript)来完成;3.canvas标签只是图形容器,必须使用脚本来绘制图形;Canvas是一个矩形区域的画布,可以用JavaScript在上面绘画;二、案例目标我们今天的目标是使用HTML5
Stella981 Stella981
3年前
Canvas绘制不规则图形,实现可拖动,编辑
目前的工作在做在线的标注工具,接触canvas一年了,各种绘制,基本上图像的交互canvas都可以完成,也写了几篇关于canvas的文章,遇到的问题也写博客上了,对于canvas有问题的朋友可以去看看。一直想写一个关于canvas系列的东西,也没时间。正好最近再捣鼓canvas,有时间就写一点,一个功能一个功能的写,争取写一个系列。以前都是绘制矩形,
Stella981 Stella981
3年前
H5中canvas和svg绘图方式介绍
在HTML5中包括了两种绘图方式,canvas和svg(矢量呈现),而与canvas不同的是,svg是一种XML标记语言,它既可以单独保存以“.svg”为后缀的文件在浏览器中打开显示,也支持建立svg标签直接嵌入在网页中显示,还可以通过<embedsrc"文件.svg"name"name自命"type"image/svgxml"height
Wesley13 Wesley13
3年前
Canvas 3D engine_HTML5动画引擎
!Canvas3Dengine_HTML5动画引擎(http://static.oschina.net/uploads/img/201403/22152537_1gkA.jpg)HTML5尚在发展当中,说替代Flash还言之过早,但它所实现的炫目功能大家也是有目共睹的,一个canvas可以做成如此效果,那我们为什么
Wesley13 Wesley13
3年前
View绘制系列(10)
Canvas基础变换前面学习了Canvas相关的一些绘制方法,不知道大家发现没?我们都是根据左上角(0,0)点算出来新的坐标,然后再绘制,这样明显不符合我们平常基于坐标原点绘制的习惯,那么我们能不能直接在原点绘制图形,然后通过操作Canvas来实现移动到目标位置呢?答案是肯定的,这就需要用到Canvas变换方法了。Canvas变
Stella981 Stella981
3年前
HT for Web基于HTML5的图像操作(三)
上篇(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.hightopo.com%2Fblog%2F258.html)采用了HTML5的Canvas的globalCompositeOperation属性达到了染色效果,其实CSS也提供了一些常规图像变化的设置参数,关于CSS的过滤器F
Wesley13 Wesley13
3年前
HTML5实现绘制几何图形
HTML5新增了一个<canvas.../属性。该元素自身并不绘制图形,只是相当于一张空画布。如果开发者需要向<canvas.../上绘制图形则必须使用JavaScript脚本进行绘制。为了向<canvas.../元素上绘图,必须经过如下3步。获取<canvas.../元素对应的DOM对象,这是一个Canvas对象。调用Canvas对象
Stella981 Stella981
3年前
HTML5 & CSS3 初学者指南(4) – Canvas使用
介绍传统的HTML主要用于文本的创建,可以通过<img标签插入图像,动画的实现则需要第三方插件。在这方面,传统的HTML极其缺乏满足现代网页多媒体需求的能力。HTML5的到来,带来了新的成员<canvas标签。什么是Canvas?HTML5的Canvas 元素使用JavaScript在网页上绘制图像。
Wesley13 Wesley13
3年前
Unity性能优化整理
纹理优化SpritePacker通过细分导入到Unity的纹理,利用自带的SpritePacker将时间段内需要同时绘制在屏幕上的纹理合并到一个图集中,可以减少Drawcall的开销UGUI优化Canvas1._分离Canvas_画布(Canvas)是U
Stella981 Stella981
3年前
Dicom关键概念
数据格式    DICOM将信息分组到datasets中,这意味着胸部X射线图像的文件实际上包含文件中的患者ID,因此图像永远不会被错误地与该信息分开。类似的,JPEG等图像格式也可以使用嵌入式tags中。    DICOM数据对象由许多属性组成,包括名字,ID等,还有一个包含图像像素数据的特殊属性。单个DICOM对象只能包含一个包含像素数
马尚 马尚
1年前
使用Python进行简单的图像分类
图像分类是深度学习中的一个常见任务,它可以将图像分到预定义的类别中。本文将介绍如何使用Python和PyTorch库进行简单的图像分类任务。1.准备数据集首先,我们需要准备一个图像数据集,其中包含不同类别的图像。你可以使用自己的数据集,也可以使用公开的数据