canvas绘图详解-01-创建与绘制直线和多边形

以下是在慕课网学习此课程的笔记

一、创建canvas

首先要写一个canvas标签,通过js来操作画布。宽高可以直接在标签里以属性写,也可以用js来控制。

<body>
    <canvas id="canvas" style="border:1px solid #aaa;display:block;margin:50px auto;">
        当前浏览器不支持canvas时,请更换浏览器
    </canvas>

    <script type="text/javascript">
        window.onload=function(){
       //获取canvas元素
var canvas = document.getElementById('canvas');

       //设置canvas的属性
canvas.width
= 1200; canvas.height = 800;

       //获取canvas的2d绘图环境
var context = canvas.getContext('2d');

}
</script> </body>

二、绘制直线和多边形

在canvas里2d的坐标是这样的

下面是绘制一个三角形和一条直线的例子

1、画一个东西你要有绘制路径,就是你要画个什么。

context.moveTo(100,100);//笔尖落在哪
context.lineTo(700,700);//笔尖走到哪

2、还要有绘制状态,就是你画个东西用多粗的线条,什么颜色等等。路径和绘制状态谁先写谁后写都行,一般状态后写。

context.fillStyle="rgb(2,100,30)";//填充颜色
context.lineWidth = 5;//笔水的大小
context.strokeStyle = "red"; //笔的颜色 

3、然后是填充绘制,路径需要绘制才能画出来,颜色选了得填充才能画出来。填充和绘制谁先谁后都可以。

context.fill();//填充
context.stroke();//绘制
最好是先填充后绘制,若本本身描边是10px,先绘制后填充,描边会变为5px

4、canvas是基于状态的绘图,在Html5的Canvas中,绘图状态指的就是2d渲染上下文外观的整套属性,包括绘制轮廓颜色,填充颜色,线宽,变换矩阵,裁减区域等。后写的会覆盖前面的

context.fillStyle="rgb(2,100,30)";//填充颜色
context.lineWidth = 5;//笔水的大小
context.strokeStyle = "red"; //笔的颜色  

5、路径要有开始和结束,写路径时一定要加上,避免出现不必要的bug

context.beginPath();//开始路径状态,重新规划一下路径
 context.closePath();//结束路径状态,结束当前路径,如果是一个未封闭的图形,会自动将首尾相连封闭起来

就像下面的例子,先画一个三角形,后画一个直线,如果没有这两个开始和结束路径做分隔,在画直线的时候,还是会把上面的三角形画一遍,但是画直线的时候改了颜色,再画的三角形就是新的颜色的三角型,把就得三角形给覆盖了。
 
<script>
    window.onload=function(){
        var canvas = document.getElementById('canvas');
        canvas.width = 1024;
        canvas.height = 768;

     //当浏览器不支持canvas的时候,另一种提示方式
if (canvas.getContext('2d')) { var context = canvas.getContext('2d'); //使用context绘制 }else{ alert('当前浏览器不支持canvas,请更换浏览器后再试'); }
    
  //绘制三角形
     //绘制路径 context.beginPath();
//开始路径状态 context.moveTo(100,100);//笔尖落在哪 context.lineTo(700,700);//笔尖走到哪 context.lineTo(100,700); context.lineTo(100,100); context.closePath();//结束路径状态      //绘制状态 context.fillStyle="rgb(2,100,30)";//填充颜色 context.fill();//填充 context.lineWidth = 5;//笔水的大小 context.strokeStyle = "red"; //笔的颜色 context.stroke();//绘制
//绘制一条直线 context.beginPath(); context.moveTo(
200,100); context.lineTo(700,600); context.closePath(); context.strokeStyle = "black"; context.stroke(); } </script>

  最后是这样的效果 



原文地址:https://www.cnblogs.com/wufangfang/p/6369815.html