`
zhangwei861003
  • 浏览: 6860 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

HTML5 Canvas

阅读更多

 HTML5-Canvas

<canvas>是html5当中的一个标签,通过Javascript来画图。

<canvas id=”canvas” width=”150″ height=”150″></canvas>

<script>

var canvas = document.getElementById(”canvas”);

var ctx = canvas.getContext(”2d”);

ctx.fillStyle = “rgb(0,0,200)”;

ctx.fillRect(10, 10, 50, 50);

</script>

画图形


 这是canvas的网格,刚才的图形,x=10,y=10, width=150, height=150

不像svg, canvas仅支持一种图形-矩形,所有其它复杂的图形都是通过一些函数来组成的。

 

 

画矩形

fillRect(x,y,width,height) : 画一个填充的矩形
strokeRect(x,y,width,height) : 为一个矩形描边
clearRect(x,y,width,height) : 清楚一个矩形的一部分并且设为透明

rect(x, y, width, height)
 直接画矩形,当调用rect方法时moveTo会直接定位到(0,0)位置
画路径

beginPath() 创建路径的第一步是调用beginPath方法,返回一个存储路径的信息
closePath() 从当前的点到起始点闭合路径
stroke()描边路径
fill()填充路径
lineTo(x, y) 从上一个起点到(x,y)的点画线,上一个起点可以通过moveTo来指定,默认为原先路径的终点
ctx.beginPath();
ctx.moveTo(75,50);
ctx.lineTo(100,75);
ctx.lineTo(100,25);
ctx.fill();

 
画弧线

arc(x, y, radius, startAngle, endAngle, anticlockwise)
 (x,y)是圆弧的圆心,radius-半径, startAngle和endAngle是圆弧的开始和结束弧度(radians = (Math.PI/180)*degree),anticlockwise为true的话是逆时针,否则为顺时针

二次方曲线以及贝塞尔曲线

quadraticCurveTo(cp1x, cp1y, x, y)
bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
 (cp1x, cp1y),(cp2x,cp2y)是曲线的控制点(红点),(x,y)是曲线的终点


使用图像

drawImage(image, x, y)image-图像对象

function draw() {
 var ctx = document.getElementById(’canvas’).getContext(’2d’);
 var img = new Image();
 img.onload = function(){
 ctx.drawImage(img,0,0);
 ctx.beginPath();
 ctx.moveTo(30,96);
 ctx.lineTo(70,66);
 ctx.lineTo(103,76);
 ctx.lineTo(170,15);
 ctx.stroke();
 }
 img.src = ‘images/backdrop.png’;
 }

drawImage(image, x, y, width, height)width和height是目标canvas上图像的宽高
drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)



 image参数与前面一样,后面的四个参数是截取的参数,再后面的四个参数是目标canvas图像的位置以及宽高


应用样式和颜色

fillStyle = color 设置填充色
strokeStyle = color 设置描边色
 color可以是css颜色值,一个渐变对象或一个模式对象

线条样式
lineWidth = value 线条宽度



 lineCap = type 线条的端点类型可以是butt(默认),round和square



 lineJoin = type 连接线的类型:round,bevel和miter(默认)

 


miterLimit = value 当设置miter时的选项


渐变

通过下面两个方法创建一个canvasGradient对象, 就可以把这个对象应用于fillStyle和strokeStyle属性了

createLinearGradient(x1,y1,x2,y2) (x1,y1)到(x2,y2)的渐变
createRadialGradient(x1,y1,r1,x2,y2,r2) (x1,y1,r1)的圆到(x2,y2,r2)的圆

addColorStop(position, color) 为canvasGradient对象添加颜色,position-[0,1]区间的值,代表添加颜色的位置,color-添加的颜色(如#fff, rgba(0,0,0,1)等)
模式

createPattern(image,type) image-Image对象,type:repeat,repeat-x, repeat-y, no-repeat 可以讲其应用与fillStyle或strokeStyle属性
阴影

shadowOffsetX = float 阴影x偏移
shadowOffsetY = float 阴影y偏移
shadowBlur = float 模糊度
shadowColor = color 阴影颜色
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 2;
ctx.shadowBlur = 2;
ctx.shadowColor = "rgba(0, 0, 0, 0.5)";
ctx.font = "20px Times New Roman";
ctx.fillStyle = "Black";
ctx.fillText("Sample String", 5, 30);

 

变换

保存和恢复
save() Cavas状态被存储在栈中,当调用save,当前的画图状态将被保存的栈中
restore() 调用restore最后一次存储的状态会被恢复
 转移
translate(x, y) 移动canvas坐标


旋转
rotate(angle) angle是旋转的角度,旋转的中心是canvas坐标原点,可以通过translate来移动canvas的坐标

 



 缩放
scale(x, y) x是水平方向的缩放因子,y是垂直方向的缩放因子,必须都为正数
 变换
transform(m11, m12, m21, m22, dx, dy)
 setTransform(m11, m12, m21, m22, dx, dy)
组合

globalCompositeOperation = type 设置不同形状的组合类型
 type:(方的图形是已经存在的canvas内容,圆的图形是新的形状)
source-over(默认) - 在canvas内容上面画新的形状
 

 destination-over



 source-in



 destination-in



 source-out



 destination-out


 source-atop


destination-atop



 lighter
 

darker


xor


copy



 剪切路径

clip()

 

 

基本动画
基本的动画步骤:
 1.清除canvas - clearRect
 2.保存canvas状态 - save
 3.画要做动画的形状
 4.恢复canvas状态 - 如果你已经保存了状态,在画新的帧之前回复它
 控制动画
 setInterval(animateShape,500);
 setTimeout(animateShape,500);

 

 

 

 

 

var img = new Image();
//User Variables
img.src = 'Capitan_Meadows,_Yosemite_National_Park.jpg';
var CanvasXSize = 800;
var CanvasYSize = 200;
var speed = 30; //lower is faster
var scale = 1.05;
var y = -4.5; //vertical offset
//End User Variables

var dx = 0.75;
var imgW = img.width*scale;
var imgH = img.height*scale;
var x = 0;
if (imgW > CanvasXSize) { x = CanvasXSize-imgW; } // image larger than canvas
var clearX
var clearY
if (imgW > CanvasXSize) { clearX = imgW; } // image larger than canvas
else { clearX = CanvasXSize; }
if (imgH > CanvasYSize) { clearY = imgH; } // image larger than canvas
else { clearY = CanvasYSize; }
var ctx;

function init() {
    //Get Canvas Element
    ctx = document.getElementById('canvas').getContext('2d');
    //Set Refresh Rate
    return setInterval(draw, speed);
}

function draw() {
    //Clear Canvas
    ctx.clearRect(0,0,clearX,clearY);
    //If image is <= Canvas Size
    if (imgW <= CanvasXSize) {
        //reset, start from beginning
        if (x > (CanvasXSize)) { x = 0; }
        //draw aditional image
        if (x > (CanvasXSize-imgW)) { ctx.drawImage(img,x-CanvasXSize+1,y,imgW,imgH); }
    }
    //If image is > Canvas Size
    else {
        //reset, start from beginning
        if (x > (CanvasXSize)) { x = CanvasXSize-imgW; }
        //draw aditional image
        if (x > (CanvasXSize-imgW)) { ctx.drawImage(img,x-imgW+1,y,imgW,imgH); }
    }
    //draw image
    ctx.drawImage(img,x,y,imgW,imgH);
    //amount to move
    x += dx;
}
<body onload="init();">
<canvas id="canvas" width="800" height="200"></canvas>

 

  • 大小: 1.2 KB
  • 大小: 1.7 KB
  • 大小: 13.3 KB
  • 大小: 7.5 KB
  • 大小: 1.4 KB
  • 大小: 6.3 KB
  • 大小: 2.4 KB
  • 大小: 2.3 KB
  • 大小: 10.4 KB
  • 大小: 1.9 KB
  • 大小: 1.5 KB
  • 大小: 1.1 KB
  • 大小: 1 KB
  • 大小: 1.4 KB
  • 大小: 1.1 KB
  • 大小: 1.2 KB
  • 大小: 1.8 KB
  • 大小: 1.9 KB
  • 大小: 2 KB
  • 大小: 1.9 KB
  • 大小: 2 KB
  • 大小: 5.4 KB
分享到:
评论

相关推荐

    HTML5 Canvas核心技术源码技术代码

    HTML5 Canvas核心技术源码技术代码、图形、动画与游戏开发。 Canvas开发、入门学习Canvas技术代码。 HTML5 Canvas核心技术源码技术代码、图形、动画与游戏开发。 Canvas开发、入门学习Canvas技术代码。 HTML5 Canvas...

    HTML 5 Canvas基础教程 源码+PDF

    《HTML 5 Canvas基础教程》从HTML5和JavaScript(以及jQuery)的基础知识讲起,全面介绍了HTML5Canvas的各种特性,包括渲染上下文、坐标系统、绘制图形、保存和恢复画布状态,以及变形、合成、处理图像和视频等,让...

    html5canvas播放视频

    HTML5 Canvas 是一个强大的网页图形绘制工具,允许开发者在网页上动态绘制图像,而无需依赖任何插件。在这个场景中,我们关注的是如何利用Canvas来播放视频。这涉及到HTML5的Media API和Canvas API的结合使用,使得...

    html5 canvas 图片压缩

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图像处理,包括绘制、修改和操作图像。在HTML5 Canvas中,我们可以通过JavaScript API实现图片的压缩功能,这对于优化网页性能,尤其是处理...

    HTML5 canvas仿屏保动态管道

    HTML5 canvas 是一种在网页上绘制图形的API,它允许开发者通过JavaScript动态创建和修改二维图形,从而实现丰富的视觉效果。在这个"HTML5 canvas仿屏保动态管道"项目中,我们利用canvas元素来模仿经典的Windows屏保...

    HTML5 Canvas核心技术代码

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的交互式用户体验。Canvas API提供了大量的方法和属性,使得JavaScript可以直接控制像素级别的图像操作。这个压缩包...

    HTML5 Canvas核心技术—图形、动画与游戏开发一书源代码

    HTML5 Canvas是Web开发中的一个关键技术,它提供了一个在网页上绘制图形的API,使得开发者可以直接在浏览器中创建丰富的交互式2D图形、动画以及游戏。"HTML5 Canvas核心技术—图形、动画与游戏开发"这本书深入浅出地...

    HTML5Canvas基础教程

    资源名称:HTML5 Canvas基础教程内容简介:《HTML5 Canvas基础教程》从HTML5和Javascript(以及jQuery)的基础知识讲起,全面介绍了HTML5 Canvas的各种特性,包括渲染上下文、坐标系统、绘制图形、保存和恢复...

    详解Html5 Canvas画线有毛边解决方法

    Html5 Canvas画线有毛边是一个在Web前端开发中常见的问题,特别是在使用Canvas 2D渲染图形时。这个问题主要是由于Canvas中坐标点与像素点之间的对齐问题造成的。下面我们将详细探讨这个问题及解决方案。 **Canvas...

    html5 canvas填色画游戏代码

    HTML5 Canvas技术是Web开发中的一个关键特性,它允许开发者在网页上绘制图形,实现动态交互的效果。在这个“html5 canvas填色画游戏代码”中,我们主要关注以下几个知识点: 1. **HTML5 Canvas**: HTML5 Canvas是一...

    HTML5 Canvas一群鸟空中盘旋动画特效

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,无需依赖任何插件。"HTML5 Canvas一群鸟空中盘旋动画特效"是一个利用Canvas API实现的交互式动画示例,其核心是通过JavaScript编程...

    HTML5 Canvas透明丝带飘动背景动画特效

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的交互式用户体验。在这个特定的案例中,“HTML5 Canvas透明丝带飘动背景动画特效”是一个利用Canvas API实现的优雅视觉...

    HTML5 Canvas核心技术图形动画与游戏开发 ((美)David Geary) 中文【PDF】

    基瑞编著的《HTML5Canvas核心技术:图形动画与游戏开发》是HTML5 Canvas领域的标杆之作,也是迄今为止该领域内容最为全面和深入的著作之一,是公认的权威经典、Amazon五星级超级畅销书、资深技术专家David Geary*...

    HTML5 Canvas 游戏开发实战PDF+源码

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,为创建交互式游戏、动画和应用程序提供了可能。本书《HTML5 Canvas游戏开发实战》由张路斌(lufy_legend)编写,深入浅出地讲解了...

    HTML5 canvas绘制流程图

    HTML5的canvas元素是网页开发中的一个强大工具,它提供了在网页上动态绘制图形的能力,类似于画布。在这个场景中,我们关注的是如何利用canvas来创建一个流程图,一种用于表示程序逻辑或工作流程的图表。流程图通常...

    HTML5 CanvasAPI

    HTML5 Canvas API 是一项强大的技术,它允许在网页中直接绘制图形、图表、图像以及动画。与传统的图像加CSS的方法相比,Canvas API 提供了一种更为灵活和强大的渲染系统,可以动态生成内容,并且能够很好地处理用户...

    HTML5 canvas宇宙中星云动画背景特效

    HTML5 canvas是现代网页开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,提供了丰富的绘图功能,使得创建交互式和动画效果成为可能。在这个特定的案例中,“HTML5 canvas宇宙中星云动画背景特效”是一...

    html5 canvas多层波浪背景动画特效

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上直接绘制图形,从而创建出丰富的交互式用户体验。在本示例中,“html5 canvas多层波浪背景动画特效”是一个利用Canvas API实现的动态视觉效果,它可以...

Global site tag (gtag.js) - Google Analytics