一篇文章读懂canvas

一.canvas简介

 是 HTML5 新增的,一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚至可以进行实时视频处理和渲染。

二.基本用法

要使用元素,必须设置其width和height属性,指定可以绘图的区域大小,出现开始和结束标签中的内容是后背信息,如果浏览器不支持元素,就会显示这些信息

 A darwing of something 

如果不给设置widht、height属性时,则默认 width为300、height为150,单位都是px。也可以使用css属性来设置宽高,但是如宽高属性和初始比例不一致,他会出现扭曲。所以,建议永远不要使用css属性来设置的宽高。

要在这块画布上绘图,需要取得绘图上下文,需要调用getContext()方法并传入上下文的名字,传入‘2d’

var drawing = document.getElementById('tutorial');
// 确定浏览器支持元素
if(drawing.getContext){
   var context = drawing.getContext('2d');
//更到代码
}

三.绘制矩形

矩形是一种可以直接在2D上下文绘制的形状,有关的方法为:fillRect(),strokeRect(),clearRect().

这三个方法都可以接受4个参数:矩形的x坐标,矩形的y坐标,矩形的宽度和矩形的高度

1.fillRect(),方法在画布上绘制矩形,填充的颜色通过fillStyle属性指定

    
    

2.strokeRect()方法在画布上会描边矩形,描边颜色通过syrokeStyle属性指定

   
    

描边线条的宽度由lineWidth属性控制,该属性可以使任意整数,另外,通过lineCap属性可以控制线条末端的形状是平头,圆头还是方头('butt','round','square') , 通过lineJoin属性可以控制线条相交的方式是圆交,斜交还是斜接('round','bevel','miter');

var lineCaps = ["butt", "round", "square"];

for (var i = 0; i < 3; i++){
   ctx.beginPath();
   ctx.moveTo(20 + 30 * i, 30);
   ctx.lineTo(20 + 30 * i, 100);
   ctx.lineWidth = 20;
   ctx.lineCap = lineCaps[i];
   ctx.stroke();
}

ctx.beginPath();
ctx.moveTo(0, 30);
ctx.lineTo(300, 30);

ctx.moveTo(0, 100);
ctx.lineTo(300, 100)

ctx.strokeStyle = "red";
ctx.lineWidth = 1;
ctx.stroke();

function draw(){
    var canvas = document.getElementById('tutorial');
    if (!canvas.getContext) return;
    var ctx = canvas.getContext("2d");

    var lineJoin = ['round', 'bevel', 'miter'];
    ctx.lineWidth = 20;

    for (var i = 0; i < lineJoin.length; i++){
        ctx.lineJoin = lineJoin[i];
        ctx.beginPath();
        ctx.moveTo(50, 50 + i * 50);
        ctx.lineTo(100, 100 + i * 50);
        ctx.lineTo(150, 50 + i * 50);
        ctx.lineTo(200, 100 + i * 50);
        ctx.lineTo(250, 50 + i * 50);
        ctx.stroke();
    }

}
draw();

3.clearRect(x, y, widh, height)

清除指定的矩形区域,然后这块区域会变的完全透明。

    
    
                    
                    

你可能感兴趣的:(js,canvas)