html绘制到canvas,html canvas 绘图

  html绘制到canvas,html canvas 绘图

  在html5中我觉得最重要的就是引入了画布,使得我们可以在网中绘制各种图形。给人感觉单在这点上有点模糊我们网和桌面程序的感觉。在html5外网中也有基于可扩展标记语言的绘图如:VML、SVG。而帆布为基于像素的绘图帆布。是一个相当于画板的超文本标记语言节点,我们必须以射流研究…操作绘图。如下:

  画布id=我的画布宽度=600 高度=300 你的浏览器还不支持哦/画布定义。

  我们可以获取帆布对象为var c=文档。getelementbyid(我的画布);其应有射流研究…属性方法如下列举:1:绘制渲染对象,c.getContext(2d ),获取2d绘图对象,无论我们调用多少次获取的对象都将是相同的对象。2:绘制方法:

  clecrRect(左、上、宽、高)清除制定矩形区域,

  fillRect(左、上、宽、高)绘制矩形,并以填充样式填充。

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

  strokeRect(左、上、宽、高)绘制矩形,以线条绘制边界。

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

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

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

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

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

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

  rect():矩形路径;

  drawImage(Imag img):绘制图片;

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

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

  createImageData,getImageData,putImageData:为帆布中像素数据图像数据为记录宽度、高度、和数据数据,其中数据为我们色素的记录为

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

  …以此类推!3:坐标变换:

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

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

  缩放比例(x,y):伸缩变换;

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

  …以此类推!

  好了,也晚了。附我的测试代码, 复制代码代码如下:

  超文本标记语言

  头

  /头

  身体

  画布id=我的画布宽度=600 高度=300 你的浏览器还不支持哦/画布

  脚本类型=文本/javascript

  可变宽度、高度、顶部、左侧;

  宽度=高度=100;

  top=left=5;

  var x=10

  变量y=10

  var c=文档。getelementbyid(我的画布);

  var maxwidth=c . width-5;

  var max height=c . height-5;

  var cxt=c . get context( 2d );

  cxt.strokeStyle= # 00f

  cxt.strokeRect(0,0,c.width,c . height);

  var img=new Image();

  img。src= 1。gif ;

  var MyInterval=null

  start();

  函数刷新(){

  cxt.clearRect(left,top,width,height);

  if((left x)(maxwidth-width) left x0){

  x=-x;

  }

  if((顶部y)(最大高度-高度) 顶部y0){

  y=-y;

  }

  左侧=左x;

  top=top y;

  cxt.drawImage(img,left,top,width,height);

  cxt.font=20pt宋体;

  cxt.fillText(破狼,左,前25);

  }

  函数start(){

  if(MyInterval==null){

  my interval=setInterval( Refresh(),100);

  }

  }

  函数stop(){

  if(MyInterval!=null){

  清区间(我的区间);

  MyInterval=null

  }

  }

  矩形(x,y,rectx,recty,rwidth,rheight)中的函数{

  return(x=rect xx=rectx rwidth)(y=recty y=recty r height)

  }

  c.onmouseover=function(e){

  if(InRectangle(e.clientX,e.clientY,left,top,width,height)){

  stop();

  }

  c.onmouseout=函数(e){

  start();

  }

  c.onmousemove=function(e){

  if(InRectangle(e.clientX,e.clientY,left,top,width,height)){

  if(MyInterval!=null){

  stop();

  }

  }否则{

  start();

  }

  }

  }

  /脚本

  /body

  /html

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: