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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。