开发者社区> ghost丶桃子> 正文

html5-Canvas绘图

简介:
+关注继续查看

    在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!

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

ExpandedBlockStart.gif
复制代码
<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系列:

  1. html5声频audio和视频video
  2. html5-Canvas绘图
  3. html5之Canvas坐标变换应用-时钟实例
  4. html5-web本地存储

 


作者:破  狼 
出处:http://www.cnblogs.com/whitewolf/ 
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-个人独立博客博客园--破狼51CTO--破狼。http://www.cnblogs.com/whitewolf/archive/2011/03/02/1968512.html


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
前端祖传三件套HTML的HTML5之新绘画元素 canvas
近年来,前端技术发展迅猛,各种新的技术层出不穷。其中之一便是HTML5绘画元素canvas。Canvas(画布)是HTML5新增加的一个绘图区域,它可以用JavaScript来进行操作和绘制图形。
24 0
HTML学习笔记(四) Canvas 下
HTML学习笔记(四) Canvas
9 0
HTML学习笔记(四) Canvas 上
HTML学习笔记(四) Canvas
15 0
基于HTML5 Canvas实现炫酷钟表效果
基于HTML5 Canvas实现炫酷钟表效果
22 0
JavaScript 基于HTML5 canvas 获取文本占用的像素宽度
JavaScript 基于HTML5 canvas 获取文本占用的像素宽度
25 0
如何在HTML5中使用Canvas实现雷达图?
如何在HTML5中使用Canvas实现雷达图?
23 0
HTML基础、canvas
介绍了html的一些基础和标签
36 0
HTML5 canvas 在线涂鸦
HTML5 canvas 在线涂鸦
58 0
HTML5的学习之canvas画布(五)
HTML5的学习之canvas画布 canvas其他剩余的方法和属性。 转换 方法 描述 scale() 缩放当前绘图至更大或更小。 rotate() 旋转当前绘图。 translate() 重新映射画布上的 (0,0) 位置。 transform() 替换绘图的当前转换矩阵。 setTransform() 将当前转换重置为单位矩阵。然后运行 transform()。 图像绘制 方法 描述 drawImage() 向画布上绘制图像、画布或视频。 createImageData() 创建新的、空白的 ImageData 对象。 getImageData() 返回 ImageData 对象,
36 0
HTML5的学习之canvas画布(四)
HTML5的学习之canvas画布 这篇博客继续学习canvas的文字相关属性和方法。 属性 属性 描述 font 设置或返回文本内容的当前字体属性。 textAlign 设置或返回文本内容的当前对齐方式。 textBaseline 设置或返回在绘制文本时使用的当前文本基线。 方法 方法 描述 fillText() 在画布上绘制"被填充的"文本。 strokeText() 在画布上绘制文本(无填充)。 measureText() 返回包含指定文本宽度的对象。 使用canvas绘制艺术字 HTML代码: <canvas id="my_canvas"&
77 0
+关注
ghost丶桃子
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
天猫HTML5互动技术实践
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多