zoukankan      html  css  js  c++  java
  • 【HTML5】Canvas绘制基础

    什么是 Canvas?

    HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。

    画布是一个矩形区域,您可以控制其每一像素。

    canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

    1,创建Canvas画布:

        <canvas id="canvas"></canvas>

    2,javascript获取Canvas对象
        var canvas=document.getElementById("canvas"); 
    3,获取具体绘图的上下文对象
        var context=canvas.getContext('2d');//使用context做具体的绘图工作
    一、canvas的常用属性、方法
         canvas.width     //设置canvas画布的宽度
         canvas.height    //设置canvas画布的高度
         canvas.getContext('2d')   //获取做具体绘图工作的上下文对象
     
    二、绘制的常用属性方法
         lineWidth       //设置线条宽度
         strokeStyle    //设置线条样式
         fillStyle       //设置一个封闭图形的填充颜色
         moveTo(x,y)    //定义线条的开始位置
         lineTo(x,y)    //定义线条的另一端位置
         beginPath()、closePath()   //定义路径的开始和路径的封闭    
         rect(x,y,width,height)      //定义一个矩形
         
         stroke()      //绘制前面定义的图形
         strokeRect(x,y,width,height)     //绘制矩形
         fill()        //对封闭图形做具体的填充
         fillRect(x,y,width,height)       //填充矩形
         
         

    1,绘制直线

    <canvas id="canvas" width="400" height="300" style="border:1px gray solid;margin:0 auto"></canvas>
    <script>
    window.onload=function(){
    var canvas=document.getElementById("canvas");
    var context=canvas.getContext("2d");
    //使用context进行绘制 if(context){
    context.moveTo(100,100);//起始位置 context.lineTo(200,200);//第二个点位置 context.lineTo(100,200);//第三个点位置(以上一个点位置为起点) context.lineTo(100,100);
    context.lineWidth=1;//定义线条宽度 context.strokeStyle="red";//定义颜色 context.stroke();//绘制操作 }else{ alert("当前浏览器不支持Canvas"); } } </script>

    2,绘制颜色不同的线条  context.beginPath()  context.closePath()

    //-----红色线条
    context.beginPath();
    context.moveTo(100,100);
    context.lineTo(200,200);
    context.lineTo(100,200);
    context.lineTo(100,100);
    context.lineWidth=1;
    context.strokeStyle="red";
    context.stroke();
    context.closePath();
    //------黑色线条
    context.beginPath();
    context.moveTo(120,100);
    context.lineTo(200,180);
    context.strokeStyle="black";
    context.stroke();
    context.closePath();
    

    3,绘制七巧板

    <canvas id="canvas" width="500" height="500"></canvas>
    <script type="text/javascript">
    var tangram=[
    {coordinate :[{x:0,y:0},{x:250,y:250},{x:0,y:500}],color:"#caff67"},
    {coordinate :[{x:0,y:0},{x:500,y:0},{x:250,y:250}],color:"#67beef"},
    {coordinate :[{x:0,y:500},{x:125,y:375},{x:250,y:500}],color:"#ef3d61"},
    {coordinate :[{x:125,y:375},{x:250,y:500},{x:375,y:375},{x:250,y:250}],color:"#f9f51a"},
    {coordinate :[{x:250,y:250},{x:375,y:375},{x:375,y:125}],color:"#a594e0"},
    {coordinate :[{x:375,y:125},{x:375,y:375},{x:500,y:250},{x:500,y:0}],color:"#fa8e00"},
    {coordinate :[{x:250,y:500},{x:500,y:500},{x:500,y:250}],color:"#f6ca29"},
    ];
    window.onload=function(){
    var canvas=document.getElementById("canvas");
    var context=canvas.getContext("2d");
    if(context){
    for(var i=0;i<tangram.length;i++){
    Draw(tangram[i],context);
    }
    }else{
    echo("当前浏览器不支持Canvas");
    }
    }
    function Draw(plate,context){
    context.beginPath();
    context.moveTo(plate.coordinate[0].x,plate.coordinate[0].y);
    for(var i=1;i<plate.coordinate.length;i++){
    context.lineTo(plate.coordinate[i].x,plate.coordinate[i].y);
    }
    context.fillStyle=plate.color;
    context.fill();
    }
    </script>
    

    4、绘制一个简单的矩形框

    function Draw(context){
    context.beginPath();
    context.strokeStyle="red";
    context.strokeRect(30,30,340,240);
    context.closePath();
    }
    

      

    5,绘制弧和圆

    使用方法: arc(X,Y,Radius,startAngle,endAngle,anticlockwise),意思是(圆心X坐标,圆心Y坐标,半径,开始角度(弧度),结束角度弧度,是否按照顺时针画);

    function Draw(context){
    context.beginPath();
    context.arc(200,150,80,0,1.5*Math.PI,false);//false顺时针,true逆时针,默认是false
    context.strokeStyle="green";
    context.stroke();
    context.closePath();
    }
    

      在stroke(),前closePath()的话将会封闭路径

  • 相关阅读:
    jenkins 配置git
    unittest 出报告 并配合 jenkins,发现有用例错误,但是构建没出现红点 的解决方法
    继承了2个类的使用方法 分别可以调用2个类里面的 方法 和 变量
    让HTMLrunner 报告的子列表都 默认展示出来的 方法(方便发送邮件时可以方便查看)
    Python:删除、增加字典的元素
    类里面变量相互调用的方法
    其他类想使用unittest的断言方法,就import unittest的框架,继承他,使用他里面的方法
    测试用例脚本 测试用例之间变量可以相互用的方法 实例
    测试用例脚本,调用其他模块方法的实例(数据分类 appium 和 selenium 看这里)
    类的继承 讲解
  • 原文地址:https://www.cnblogs.com/Sunlimi/p/canvas-base.html
Copyright © 2011-2022 走看看