HTML5之Canvas画图

canvas是HTML5中新增一个HTML5标签与操作canvasjavascript API,它可以实现在网页中完成动态的2D3D图像技术。

canvas可以完成动画、游戏、图表、图像处理等原来需要Flash完成的一些功能

一、创建canvas元素

不管绘制直线还是图线等,都需要先创建canva元素

//获取canvas元素
var canvans=document.getElementById ("can");
//动态的设置宽和高
//获取屏幕的可视区域宽高
var window_w=document.documentElement.clientWidth ;
var window_h=document.documentElement.clientHeight ;
canvans.width= window_w;
canvans.height= window_h;
//操作canvas
//转化为2d模式   创建了canvas元素后,要在canvas元素上面绘制图象,首先必须获取canvas环境上下文
var content=canvans.getContext("2d");

二、画线

//获取canvas元素
var canvas=document.getElementById ("can");
var window_w=document.documentElement.clientWidth ;
var window_h=document.documentElement.clientHeight ;
canvas.width= window_w;
canvas.height= window_h;
var content=canvas.getContext("2d");

 //画线条

    /*1.设置线宽*/
    content.lineWidth =10;
    /*2.设置线条颜色*/
    content.strokeStle="red";
    //3.画线的坐标
    content.moveTo (0,0);      //起点坐标
    content.lineTo (400,400);   //终点坐标
    //4.执行划线
    content.stroke();

//紧接着画另一条线
    content.beginPath ();   //表示开始
    content.lineWidth =5;
    content.strokeStyle ="blue";  //设置线条颜色
    content.fillStyle ="pink";    //设置填充颜色
    content.moveTo (400,400);
    content.lineTo (0,400);
    content.lineTo (0,600);

    //执行划线
    content.stroke ();
    //5.执行填充
    content.fill();
    content.closePath();

 canvas.onmousemove=function(e){
                //划线到当前客户端的x与y座标
                ctx.lineTo(e.clientX, e.clientY);
                //执行画线
                ctx.stroke();
            }

三、画矩形

    //绘制矩形
    content.fillStyle="red";
    content.lineWidth=3;
    content.strokeStyle="blue";
    /*content.strokeRect(x,y,width,height)以x,y为左上角,绘制宽度为width,高度为height的矩形。*/
    content.strokeRect(200,200,400,200);
    content.fillRect(200,200,400,200);   /* 以x,y为左上角,填充宽度为width,高度为height的矩形。*/
    content.fill();

    //清除
    content.clearRect(300,300,10,10);   /*清除以x,y为左上角,宽度为width,高度为height的矩形区域。*/

四、圆画

语法:context.arc(x,y,radius,startAngle,endAngle,anticlockwise)

arc方法用来绘制一段圆弧路径,以(x,y)圆心位置radius为半径、startAngle为起始弧度、endAngle为终止弧度来,而在画圆弧时的旋转方向则由最后一个参数 anticlockwise 来指定,如果为 true 就是逆时针,false 则为顺时针,Math.PI * 2 刚好为一周。

  //绘制圆
    content.beginPath();
     content.strokeStyle="green";
     content.fillStyle="green";
     content.arc(700,350,200,0,Math.PI,true);
     content.fill();
     content.closePath();
     content.beginPath();
     content.fillStyle="red";
     content.arc(700,400,150,0,Math.PI*2,true);
     content.fill();
     content.closePath();
绘制圆形渐变
createRadialGradient(x0, y0,r0 x1, y1,r1);方法创建放射状/圆形渐变对象。渐变可用于填充矩形、圆形、线条、文本等等。
   参数       描述
   x0    渐变的开始圆的 x 坐标
   y0   渐变的开始圆的 y 坐标
   r0   开始圆的半径
   x1    渐变的结束圆的 x 坐标
   y1   渐变的结束圆的 y 坐标
   r1 结束圆的半径

addColorStop(stop, color) 方法规定渐变对象中的颜色和位置。  stop 介于 0.0 与 1.0 之间的值,表示渐变中开始与结束之间的位置 ,  color  在 stop 位置显示的 CSS 颜色值。

    content.beginPath();
    var rad=content.createRadialGradient(700,200,10,700,200,300);
    //添加渐变色
    rad.addColorStop(0,"red");
    rad.addColorStop(0.1,"blue");
    rad.addColorStop(0.2,"green");
    rad.addColorStop(0.3,"pink");
    rad.addColorStop(0.4,"orange");
    rad.addColorStop(0.5,"green");
    rad.addColorStop(0.6,"orange");
    rad.addColorStop(0.7,"blue");
    rad.addColorStop(0.8,"yellow");
    rad.addColorStop(0.9,"red");
    rad.addColorStop(1,"green");
    content.fillStyle=rad;
    content.arc(700,200,300,0,Math.PI*2,true);
    content.fill();
    content.closePath();

五、绘制图像

 //绘制图像
    var img=document.createElement("img");
    img.src="./image/my_2.png";
    //context.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)
    //截取image图像以sx,sy为左上角坐标,宽度为sw,高度为sh的一块矩形区域绘制到画布上以dx,dy坐标位置,图像宽度是dw,高度是dh。
    content.drawImage(img,0,0,200,200,100,100,200,200);

六、绘制文字

       //绘制文字
    var rad=content.createRadialGradient(700,200,10,700,200,300);
    //添加渐变色
    rad.addColorStop(0,"red");
    rad.addColorStop(0.1,"blue");
    rad.addColorStop(0.2,"green");
    rad.addColorStop(0.3,"pink");
    rad.addColorStop(0.4,"orange");
    rad.addColorStop(0.5,"green");
    rad.addColorStop(0.6,"orange");
    rad.addColorStop(0.7,"blue");
    rad.addColorStop(0.8,"yellow");
    rad.addColorStop(0.9,"red");
    rad.addColorStop(1,"green");

    content.beginPath ();
    //使用context.font属性设置字体
   // context.font='italic bolder 48px 黑体';
    content.font="50px yahei";
    content.fillStyle =rad;
    content.fillText("hello word!",800,200,500);

    content.strokeStyle =rad;
    content.strokeText("hello word!",400,200,500);
    content.closePath ();

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值