• HTML5 canvas


    基本知识


    context是一个封装了很多绘图功能的对象,获取这个对象的方法是  

            var context =canvas.getContext("2d");   

       

    canvas元素绘制图像的时候有两种方法,分别是

            context.fill()//填充

            context.stroke()//绘制边框

    style:在进行图形绘制前,要设置好绘图的样式

            context.fillStyle//填充的样式

            context.strokeStyle//边框样式  

          context.lineWidth//图形边框宽度

    颜色的表示方式:

             直接用颜色名称:"red" "green" "blue"

             十六进制颜色值: "#EEEEFF"

             rgb(1-255,1-255,1-255)

             rgba(1-255,1-255,1-255,透明度)

    绘制矩形  context.fillRect(x,y,width,height)  strokeRect(x,y,width,height)


         x:矩形起点横坐标(坐标原点为canvas的左上角,当然确切的来说是原始原点,后面写到变形的时候你就懂了,现在暂时不用关系)

         y:矩形起点纵坐标

         矩形长度

         height:矩形高度

    //填充背景
    function drawFill(){ context.fillStyle = "red"; context.fillRect(0, 120, 100, 100); }
    //填充边框 function drawStroke(){ context.strokeStyle = "blue"; context.strokeRect(120, 120, 100, 100); }

    清除矩形区域 context.clearRect(x,y,width,height)


         x:清除矩形起点横坐标

         y:清除矩形起点纵坐标

         清除矩形长度

         height:清除矩形高度

    //填充背景
    function drawFill(){
         context.fillStyle = "red";
         context.fillRect(0, 0, 100, 100);
    }//填充边框
    function drawStroke(){
        context.strokeStyle = "blue";
        context.strokeRect(0, 120, 100, 100);
    }
    //清除画布
    function clearCanvas(){
       context.clearRect(50,50,50,170);       
    }

     圆弧context.arc(x, y, radius, starAngle,endAngle, anticlockwise)


        x:圆心的x坐标

        y:圆心的y坐标

        straAngle:开始角度

        endAngle:结束角度

        anticlockwise:是否逆时针(true)为逆时针,(false)为顺时针

        ps:经过试验证明书本上ture是顺时针,false是逆时针是错误的,而且无论是逆时针还是顺时针,角度都沿着顺时针扩大,如下图:

    路径  context.beginPath()    context.closePath()


        *号为重点

        1、系统默认在绘制第一个路径的开始点为beginPath

        *2、如果画完前面的路径没有重新指定beginPath,那么画第其他路径的时候会将前面最近指定的beginPath后的全部路径重新绘制

        3、每次调用context.fill()的时候会自动把当次绘制的路径的开始点和结束点相连,接着填充封闭的部分

        如果没有closePath那么前面的路径会保留,实验证明正确的结论是 如果没有重新beginPath那么前面的路劲会保留

     绘制线段 context.moveTo(x,y)  context.lineTo(x,y)


        x:x坐标

        y:y坐标

        每次画线都从moveTo的点到lineTo的点,

        如果没有moveTo那么第一次lineTo的效果和moveTo一样,

        每次lineTo后如果没有moveTo,那么下次lineTo的开始点为前一次lineTo的结束点

    function draw1(){
            context.fillStyle="red";
            context.beginPath();
            context.moveTo(150,50);
            context.lineTo(100,100);
            context.lineTo(200,100);
            context.closePath();
            context.fill();
        }
        function draw2(){
            context.fillStyle="blue";
            context.beginPath();
            context.moveTo(120,100);
            context.lineTo(80,140);
            context.lineTo(220,140);
            context.lineTo(180,100);
            context.closePath();
            context.fill();
        }

    绘制贝塞尔曲线(贝济埃、bezier) context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y) 

    绘制二次样条曲线 context.quadraticCurveTo(qcpx,qcpy,qx,qy)


        cp1x:第一个控制点x坐标

        cp1y:第一个控制点y坐标

        cp2x:第二个控制点x坐标

        cp2y:第二个控制点y坐标

        x:终点x坐标

        y:终点y坐标

     

        qcpx:二次样条曲线控制点x坐标

        qcpy:二次样条曲线控制点y坐标

        qx:二次样条曲线终点x坐标

        qy:二次样条曲线终点y坐标

    function way(){
            context.strokeStyle="blue"
            context.beginPath()
            context.moveTo(700,0)
            context.lineTo(800,0)
            context.bezierCurveTo(470,170,750,380,350,550)
            context.lineTo(250,500)
            context.bezierCurveTo(650,380,370,170,700,0)
            context.stroke();
    
        }
  • 相关阅读:
    C++ STL Set使用
    C++ STL算法
    C++ STL List使用
    C++中的构造析构函数
    七、Linux进程调度-应用内核设置调度策略和优先级
    Qcom高通相关汇总
    Cgroup内核文档翻译(8)——/dev/cpuctl/*
    用户进程和内核线程的CPU亲和性设置
    Scheduler内核文档翻译(1)——Documentationschedulersched-tune.txt
    uCgui和emWin的区别
  • 原文地址:https://www.cnblogs.com/Outyua/p/4641730.html
Copyright © 2020-2023  润新知