【HTML】【学习】 2、Canvas学习笔记【上】

Canvas是HTML新增的开发跨平台动画和游戏的标准解决方案,能够实现对图像和视频进行像素级操作。

一、在页面中添加canvas元素

就像添加一个普通div一样,canvas的添加方式为:

<canvas id = "myCanvas" width = "200px" height = "100px">不支持时显示的部分</canvas>

可以用对div添加样式的方法使用CSS对Canvas添加样式

二、使用Canvas绘制图形

Canvas本身并不能绘图,需使用JavaScript来完成绘图。

1、绘制一个简单的矩形:

<canvas id="myCanvas" style="border:1px solid;" width="400px" \

height="200px">您的浏览器不支持Canvas元素!</canvas>

<script type="text/javascript">

var c = document.getElementById("myCanvas");

var context = c.getContext("2d");

context.fillStyle = "#FF00FF";

context.fillRect(100,50,200,100);

</script>

运行后在网页上将看到在Canvas框中绘制了一个紫红色的矩形

代码解释 :

首先,使用getElementById("myCanvas")来找到Canvas元素

然后,调用Canvas的getContext("2d")方法来创建一个图形对象,同时使用2d环境绘制

最后,通过改变这个图形对象的属性的值来完成绘图。

2、借助坐标绘制图形

在上文中使用了坐标,通过使用坐标,我们可以绘制精确的图形

<canvas id="lineCanvas" style="border:1px solid;" width="400px"\

height="300px">你的浏览器不支持canvas元素!</canvas>

<script>

var l = document.getElementById("lineCanvas");

var line = l.getContext("2d");

line.moveTo(0,0);

line.lineTo(200,200);

line.lineTo(400,0);

line.stroke();

</script>

以上代码运行后在一个400×300的矩形框中出现了一条折线

代码解释 :

同1所示,找到Canvas元素,创建一个图形对象。

调用这个图形对象的moveTo()方法,定位图形起始位置在(0,0)

调用lineTo()方法,为对象创建2条直线(如果前面没有用moveTo(),则会继续当前的坐标)

调用stroke()方法,绘制出这2条直线

在1的代码中,可以使用图形对象的strokeStyle和strokeRect方法为绘制轮廓

context.strokeStyle = "#00";

context.strokeRect(100,50,200,100);

以上代码为矩形添加了黑色的轮廓。

3、绘制圆形

使用beginPath、arc、closePath和fill方法绘制圆形

<canvas id="printRoundCanvas" style="border:1px solid;" width="400px"         height="300px">您的浏览器不支持canvas</canvas>

<script>

var r = document.getElementById("printRoundCanvas");

var oRound = r.getContext("2d");

oRound.fillStyle = "#FF00FF";

oRound.beginPath();

oRound.arc(200,150,100,0,Math.PI*2,true);

oRound.closePath();

oRound.fill();

</script>

以上代码运行后在一个400×300的矩形中绘制了一张日本国旗

圆形的圆心位于坐标(200,150)点,半径为100px

代码解释:

获取元素,创建对象。。。在此不再赘述

canvas使用绘制路径并填充的方式绘制圆形,beginPath()方法开始绘制路径

closePath()方法结束绘制路径

arc()方法用于绘制圆形,它接受6个参数,分别是

描述圆形的坐标x,y

圆的半径radius

开始和结束的角度,用弧度制表示,绘制一个完整的圆是从0到2π(360度)

是否按逆时针绘制 anticlockwise

了解到这些以后,再加上上面学习到的知识,可以绘制各种我们想要的圆形

修改arc()的参数,我们可以得到以上图形,现在,我们来具体研究一下canvas绘制圆形的机制

如上图所示,在为路径设置了一定的绘制角度后,关闭路劲并填充得到了一块被切了一刀的圆

线的图像是基于点移动产生的轨迹,圆的图像是基于线(路径)的移动产生的轨迹,

最后关闭路径时又会自动生成一块连接开始路径和结束路径的三角形

要产生扇形,可以在绘制圆形前使用moveTo()方法,将图形对象的开始点设置为圆形。

产生右边3个圆形的代码:

oRound2.beginPath();

oRound2.moveTo(300,100);

oRound2.arc(300,100,66,Math.PI*(-1/2),Math.PI*2,true);

oRound2.closePath();

oRound2.fill();

oRound3.beginPath();

oRound3.moveTo(500,100);

oRound3.arc(500,100,66,0, Math.PI*0.5,true);

oRound3.closePath();

oRound3.fill();

oRound4.beginPath();

oRound4.moveTo(700,100);

oRound4.arc(700,100,66,Math.PI*0.25, Math.PI*2,true);

oRound4.closePath();

oRound4.fill();

4、清空画布

使用图形对象的clearRect()方法来清除画布

clearRect接受4个参数,描述被清除的区域的坐标

5、绘制贝塞尔曲线

使用canvas描绘二次贝塞尔曲线:

context.quadraticCurveTo(cp1x,cp1y,x,y);

cp1x,cp1y是控制点的坐标   x,y是终点坐标

绘制一条控制点在(430,160)的二次贝塞尔曲线:

var curve = document.getElementById("printCurveCanvas2");

var oCurve = curve.getContext("2d");

oCurve.strokeStyle="#FF0000";

oCurve.moveTo(0,400);

oCurve.quadraticCurveTo(460,130,600,400);

oCurve.stroke();

代码解释:

moveTo()方法设定曲线起始点为(0,400)

quardraticCurve()方法绘制曲线,终点为(600,400)

绘制三次贝塞尔曲线

bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y)

三次贝塞尔曲线有2个控制点

在上图的基础上画一条控制点在(200,200)和(600,200),起始位置在(200,0),

结束位置在(600,0)的二次贝塞尔曲线

以上内容为本人学习笔记,如有错误,恳请大神指出,本人感激不尽。

时间: 2024-12-21 01:17:55

【HTML】【学习】 2、Canvas学习笔记【上】的相关文章

【HTML】【学习】 Canvas学习笔记【上】

Canvas是HTML新增的开发跨平台动画和游戏的标准解决方案,能够实现对图像和视频进行像素级操作. 一.在页面中添加canvas元素 就像添加一个普通div一样,canvas的添加方式为: <canvas id = "myCanvas" width = "200px" height = "100px">不支持时显示的部分</canvas> 可以用对div添加样式的方法使用CSS对Canvas添加样式 二.使用Canvas

html5 canvas 学习笔记(一)

一.canvas元素API canvas元素并未提供很多API,实际上他只提供了两个属性与三个方法: 1.canvas元素属性 width 属性:与 height 属性: canvas元素绘图表面的宽度,在默认状况下,浏览器会将canvas元素大小设定成与绘图表面大小一致,然而如果在css中覆写了元素大小,那么浏览器则会将绘图表面进行缩放,使之符合元素尺寸.其值为非负整数,默认值为300. 2.canvas元素方法 getContext()方法: 返回与该canvas元素相关的绘图环境对象,每个

[转载]Android Bitmap和Canvas学习笔记

http://blog.chinaunix.net/uid-20771867-id-3053339.html [转载]Android Bitmap和Canvas学习笔记,布布扣,bubuko.com

Canvas 学习笔记1

#Canvas 学习笔记1 @[Canvas,Nunn,HTML5,javascript] ##前言 相信大家多多少少都有了解过`Canvas`,这里我就不多做解释了,网上也充斥了这方面的知识,很多人看了之后,其实发现作用非常小,因为似乎这些东西什么也做不了,本着学习提升自己,造福大家,我打算把我学习`Canvas`的历程记录在这里. 首先推荐大家先看看阮一峰大大写的这个[Canvas API](http://javascript.ruanyifeng.com/htmlapi/canvas.ht

canvas学习笔记一

为了研究pixi库,就顺带从头到位学习下canvas吧 判断支持力度 var webgl = (function() { try { var canvas = document.createElement('canvas'); return !!window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')); } catch (e) { retur

学习HTML的一些笔记

初学网页制作,发现很大一本书概括起来不过是以下一系列的标记,记下这些经常用到的标记和知道怎么熟练使用就好了,还有其它的用到时再去查 <b></b>粗体<em></em>斜体 强调<i></i>斜体 不强调<strong></strong>强调<sup></sup>上标标记<sub></sub>下标标记<big></big>字体大小<s

[HTML5 Canvas学习]使用颜色和透明度

在canvas中使用颜色和透明度,通过context的strokeStyle和fillStyle属性设置,strokeStyle和fillStyle的值可以是任意有效的css颜色字串.可以用RGB.RGBA.HSL.HSLA以及十六进制RGB标注来指定颜色,也可以通过 "yellow"."silver"."teal"这样的颜色名称来指定.除此之外,还可以使用SVG1.0规范中的颜色名称,比如"goldenrod"."

android金阳光自动化测试——学习历程:电池续航上&amp;&amp;下

章节:自动化基础篇——电池续航自动化测试上&&下 网易云课堂: http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=878098&courseId=712011 http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=878099&courseId=7120

学习Logistic Regression的笔记与理解(转)

学习Logistic Regression的笔记与理解 1.首先从结果往前来看下how logistic regression make predictions. 设我们某个测试数据为X(x0,x1,x2···xn),Θ(θ0,θ1,θ2,···θn)为我们的学习算法所学到的参数,那么 写成向量的话就变成 Z就是我们得到的结果,但是logistic regression只能处理二值数据,这个Z是一个连续值,它的范围可以很广.为了把这个Z化为二值变量,引人Sigmoid函数 这个函数的图形如下所示

学习OpenCV的学习笔记系列之-- 环境配置

要想学好OpenCV,首先当然要知道怎么配置环境了.以本人的配置环境为例,步骤如下. 第一步 下载及解压OpenCV源码 虽然很多第三方网站及一些学习论坛会提供OpenCV的源码下载,但是还是推荐到官网进行下载,这样可以避免很多麻烦!(病毒?木马?你懂得!) 官网的下载地址如下: http://opencv.org/downloads.html 在此地址的界面上可以找到最新版本的OpenCV源码.我使用的是2014-04-25更新的2.4.9版本(目前最新),根据自己的系统选择对应的源码版本.