HTML/CSS

html5-Canvas绘图html教程

时间:2013-6-19 22:09:27  作者:WPF之家  来源:http://www.wpf123.com  查看:358  评论:0
内容摘要: 在html5中我觉得最重要的就是引入了Canvas,使得我们可以在web中绘制各种图形。给人感觉单在这点上有点模糊我们web和桌面程序的感觉。在html5外web中也有基于xml的绘图如:VML、SVG。而Canvas为基于像素的绘图。Canvas是一个相当于画板的h...
 在html5中我觉得最重要的就是引入了Canvas,使得我们可以在web中绘制各种图形。给人感觉单在这点上有点模糊我们web和桌面程序的感觉。在html5外web中也有基于xml的绘图如:VML、SVG。而Canvas为基于像素的绘图。Canvas是一个相当于画板的html节点,我们必须以js操作绘图。

如下:

<canvas id="myCanvas" width="600" height="300">你的浏览器还不支持哦</canvas>定义。

我们可以获取canvas对象为var c=document.getElementById("myCanvas");其应有js属性方法如下列举:

1:绘制渲染对象,c.getContext("2d"),获取2d绘图对象,无论我们调用多少次获取的对象都将是相同的对象。

2:绘制方法:

clecrRect(left,top,width,height)清除制定矩形区域,

fillRect(left,top,width,height)绘制矩形,并以fillStyle填充。

fillText(text,x,y)绘制文字;

strokeRect(left,top,width,height)绘制矩形,以strokeStyle绘制边界。

beginPath():开启路径的绘制,重置path为初始状态;

closePath():绘制路径path结束,它会绘制一个闭合的区间,添加一条起始位置到当前坐标的闭合曲线;

moveTo(x,y):设置绘图其实坐标。

lineTo(x,y);绘制从当前其实位置到x,y直线。

fill(),stroke(),clip():在完成绘制的最后的填充和边界轮廓,剪辑区域。

arc():绘制弧,圆心位置、起始弧度、终止弧度来指定圆弧的位置和大小;

rect():矩形路径;

drawImage(Imag img):绘制图片;

quadraticCurveTo():二次样条曲线路径,参数两个控制点;

bezierCurveTo():贝塞尔曲线,参数三个控制点;

createImageData,getImageData,putImageData:为Canvas中像素数据。ImageData为记录width、height、和数据 data,其中data为我们色素的记录为

argb,所以数组大小长度为width*height*4,顺序分别为rgba。getImageData为获取矩形区域像素,而putImageData则为设置矩形区域像素;

… and so on!

3:坐标变换:

translate(x,y):平移变换,原点移动到坐标(x,y);

rotate(a):旋转变换,旋转a度角;

scale(x,y):伸缩变换;

save(),restore():提供和一个堆栈,保存和恢复绘图状态,save将当前绘图状态压入堆栈,restore出栈,恢复绘图状态;

… and so on!

好了,也晚了。附我的测试代码,:

html5-Canvas绘图html5-Canvas绘图View Code
<html>
<head>
</head>
<body>
<canvas id="myCanvas" width="600" height="300">你的浏览器还不支持哦</canvas>
<script type="text/javascript">

var width,height,top,left;
width
=height=100;
top
=left=5;
var x=10;
var y=10;

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

var maxwidth=c.width-5;
var maxheight=c.height-5;
var cxt=c.getContext("2d");
cxt.strokeStyle
="#00f";
cxt.strokeRect(
0,0,c.width,c.height);

var img=new Image();
img.src
="1.gif";
var MyInterval=null;
start();

function Refresh(){
cxt.clearRect(left,top,width,height);

if((left+x)>(maxwidth-width)||left+x<0){
x
=-x;
}


if((top+y)>(maxheight-height)||top+y<0){
y
=-y;
}

left
=left+x;
top
=top+y;
cxt.drawImage(img,left,top,width,height);
cxt.font
="20pt 宋体";
cxt.fillText(
"破狼",left,top+25);

}


function start(){
if(MyInterval==null){
MyInterval
=setInterval("Refresh()",100);
}
}


function stop(){
if(MyInterval!=null){
clearInterval(MyInterval);
MyInterval
=null;
}
}

function InRectangle(x,y,rectx,recty,rwidth,rheight){
return (x>=rectx&&x<=rectx+rwidth)&&(y>=recty&&y<=recty+rheight)
}
c.onmouseover
=function(e){
if(InRectangle(e.clientX,e.clientY,left,top,width,height)){
stop();
}

c.onmouseout
=function(e){
start();
}

c.onmousemove
=function(e){
if(InRectangle(e.clientX,e.clientY,left,top,width,height)){
if(MyInterval!=null){
stop();
}
}
else{
start();
}
}

}

</script>
</body>
</html>

参考火狐html文档:https://developer.mozilla.org/en/HTML/HTML5


标签:html5 Canvas 绘图 

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。本文出自“wpf之家”,请务必保留此出处:http://www.wpf123.com

相关评论
Copyright © 2009-2014 WPF之家(http://www.wpf123.com/) All rights reserved
 Powered by WPF之家
鄂ICP备13006396号