zoukankan      html  css  js  c++  java
  • 第五章、使用预绘制图片

    你可以添加预先绘制的图像到画布上,如果gif,jpeg,png,svg或者视频的当前帧。默认情况,这样的图片会按照它原本的大小绘制,超过了canvas的部分会被裁剪。但是,你可以指定高度和宽度在其中显示图像,或者图像绘制区域来绘制。

    你可以用img元素,视频元素,或其他canvas元素做图像源。如果你的image是一个html元素,通过getElementById 把它变成一个javascript对象。你也可以在javascript中创建一个图像源如new Image.

    本章介绍如何使用通过<img>标签指定的图像。如果你使用gif动画做为图像源,那么只有动画的第一帧被现实,透明度是支持的。

    当你使用png图像作为图像源,那么建议它有个透明的背景,这样能够顺利符合其它元素。与Gif,jpg相比,png是首选的图像源。

    如果你的动画中使用了大量的缩放和旋转,理想的图像源是一个svg文件。Svg本身与分辨率武馆,所以对任何大小或者旋转,看起来更加光滑和锐利。

    非svg格式的图片缩放比例超过1能够导致像素画。除非你的源是svg,如果你的图像需要显示各种尺寸,最好的结果是用图像本身显示尺寸最大作为源,可以向下缩放图像使它显小。

    你可以使用另一个canvas作为图像源,但是不能用canvas作为本身内部的图像源,使用canvas作为图像源的主要原因是作为一个离屏缓冲进行图像处理。你可以将图像加载到一个隐藏的画布,处理图像的像素级别,并在另一个画布上显示结果。(这一段有点复杂,后面图像的像素级别处理时会详细讲解。

    绘制图像

    绘制图像使用图像原本的宽高,裁切掉canvas之外的部分。调用drawImage(image,x,y),其中(x,y)是坐标,从哪个点开始绘制图像。

    示例:

    <canvas id="can" height="300" width="300"></canvas>

    <img id="sprite" src="lem.png" style="display:none" />

    Js:

    var sprite = document.getElementById("sprite");

    ctx.drawImage(sprite, 0, 0);

    按照给定的宽高绘制图像

    ctx.drawImage(image, x, y, width, height)

    图像被缩放到指定的宽高,超出canvas的部分会从边界处裁切掉。

    ctx.drawImage(sprite, 0, 0, 200, 100);

    绘制带测绘区region mapping 的图像

    ctx.drawImage(image, sx, sy, sWide, sHi, dx, dy, dWide, dHigh)

  • 相关阅读:
    Django框架基础之序列化
    资产采集
    CMDB
    数据库--三层架构
    Django 项目一补充
    评论楼
    图片预览
    验证码
    如何使用C/C++动态库与静态库中的宏
    Matlab 直线方程、采样函数
  • 原文地址:https://www.cnblogs.com/yixiaoheng/p/canvas-animation-7.html
Copyright © 2011-2022 走看看