认识canvas

1、什么是Canvas?

HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。 画布是一个矩形区域,您可以控制其每一像素。 canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

创建Canvas元素

向 HTML5 页面添加 canvas 元素。 规定元素的 id、宽度和高度:

<canvas id="myCanvas" width="200" height="100"></canvas>

Canvas坐标系

通过JavaScript来绘制

    /*获取元素*/
    var myCanvas = document.querySelector('#myCanvas');
    /*获取绘图工具*/
    var context = myCanvas.getContext('2d');
    /*设置绘图的起始位置*/
    context.moveTo(100,100);
    /*绘制路径*/
    context.lineTo(200,200);
    /*描边*/
    context.stroke();

2、Canvas的基本使用

图形绘制

路径的概念 :beginPath()      开启一个新路径

路径的绘制 :描边 stroke() ;填充 fill()

闭合路径 :手动闭合 ;程序闭合 closePath()

注意:如果有多次绘制不同的线条的话,最好每次开启新的路径,避免多次描边。

填充规则(非零环绕)

设置样式

画笔的状态

  • lineWidth 线宽,默认1px

  • lineCap 线末端类型:(butt默认)、round、square

  • lineJoin 相交线的拐点 miter(默认)、round、bevel

  • strokeStyle 线的颜色

  • fillStyle 填充颜色

  • setLineDash() 设置虚线

  • getLineDash() 获取虚线宽度集合

  • lineDashOffset 设置虚线偏移量(负值向右偏移)

案例:和线相关的属性和方法
 

 <style>
        canvas {
            border: 1px solid #ccc;
        }
    </style>
</head>
<body>
<canvas width="600" height="400"></canvas>
<script>
    var myCanvas = document.querySelector('canvas');
    var ctx = myCanvas.getContext('2d');

    /*画平行线*/
    ctx.beginPath();
    ctx.moveTo(100,100);
    ctx.lineTo(200,20);
    ctx.lineTo(300,100);
    ctx.strokeStyle = 'blue';
    ctx.lineWidth = 10;
    ctx.lineCap = 'butt';
    ctx.lineJoin = 'miter';
    ctx.stroke();

    ctx.beginPath();
    ctx.moveTo(100,200);
    ctx.lineTo(200,120);
    ctx.lineTo(300,200);
    ctx.strokeStyle = 'red';
    ctx.lineWidth = 20;
    ctx.lineCap = 'square';
    ctx.lineJoin = 'bevel';
    ctx.stroke();


    ctx.beginPath();
    ctx.moveTo(100,300);
    ctx.lineTo(200,220);
    ctx.lineTo(300,300);
    ctx.strokeStyle = 'green';
    ctx.lineWidth = 30;
    ctx.lineCap = 'round';
    ctx.lineJoin = 'round';
    ctx.stroke();


</script>
</body>

3、Canvas图形绘制

矩形绘制

  • rect(x,y,w,h) 没有独立路径

  • strokeRect(x,y,w,h) 有独立路径,不影响别的绘制

  • fillRect(x,y,w,h) 有独立路径,不影响别的绘制

  • clearRect(x,y,w,h) 擦除矩形区域

圆弧绘制

arc() 

  • x 圆心横坐标

  • y 圆心纵坐标

  • r 半径

  • startAngle 开始角度  如 Math.PI/2

  • endAngle 结束角度   如Math.PI

  • anticlockwise 是否逆时针方向绘制(默认false表示顺时针;true表示逆时针)

绘制文本

ctx.font = '微软雅黑' 设置字体

strokeText()

fillText(text,x,y,maxWidth)

  • text 要绘制的文本

  • x,y 文本绘制的坐标(文本左下角)

  • maxWidth 设置文本最大宽度,可选参数

ctx.textAlign文本水平对齐方式,相对绘制坐标来说的

  • left

  • center

  • right

  • start 默认

  • end

ctx.direction属性css(rtl ltr) start和end于此相关

  • 如果是ltr,start和left表现一致

  • 如果是rtl,start和right表现一致

ctx.textBaseline 设置基线(垂直对齐方式 )

  • top 文本的基线处于文本的正上方,并且有一段距离

  • middle 文本的基线处于文本的正中间

  • bottom 文本的基线处于文本的证下方,并且有一段距离

  • hanging 文本的基线处于文本的正上方,并且和文本粘合

  • alphabetic 默认值,基线处于文本的下方,并且穿过文字

  • ideographic 和bottom相似,但是不一样

measureText() 获取文本宽度obj.width

5、做动画

绘制图片

drawImage()

  1. 三个参数drawImage(img,x,y)
  • img 图片对象、canvas对象、video对象

  • x,y 图片绘制的左上角

  1. 五个参数drawImage(img,x,y,w,h)

  • img 图片对象、canvas对象、video对象

  • x,y 图片绘制的左上角

  • w,h 图片绘制尺寸设置(图片缩放,不是截取)

  1. 九个参数drawImage(img,x,y,w,h,x1,y1,w1,h1)
  • img 图片对象、canvas对象、video对象

  • x,y,w,h 图片中的一个矩形区域

  • x1,y1,w1,h1 画布中的一个矩形区域

坐标变换

平移 移动画布的原点

  • translate(x,y) 参数表示移动目标点的坐标

缩放

  • scale(x,y) 参数表示宽高的缩放比例

旋转

  • rotate(angle) 参数表示旋转角度

canvasAPI

w3school

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值