zoukankan      html  css  js  c++  java
  • canvas 学习笔记

    周末之余很是无聊,因此看看HTML5 canvas 以下是学习笔记,写得比较简单,纯属自己个人记录。。

    1:canvas arc()方法

    以下是w3c上的描述:

    arc() 方法使用一个中心点和半径,为一个画布的当前子路径添加一条弧。
    方法-参数:
    arc(x, y, radius, startAngle, endAngle, counterclockwise)
    参数说明:
    x, y 描述弧的圆形的圆心的坐标。
    radius 描述弧的圆形的半径。
    startAngle, endAngle

    沿着圆指定弧的开始点和结束点的一个角度。这个角度用弧度来衡量。

    沿着 X 轴正半轴的三点钟方向的角度为 0,角度沿着逆时针方向而增加。

    counterclockwise 弧沿着圆周的逆时针方向(TRUE)还是顺时针方向(FALSE)遍历。

    下面是我的实例。。。(欢迎拍砖)

    function drawPath(canvas_id){
            
    var canvas_doc = document.getElementById(canvas_id);
            
    if(canvas_doc == null){return false;}
            
    var context = canvas_doc.getContext('2d');
            if(context == null){return false;}
            context.fillStyle 
    = "#EEEEFF";
            context.fillRect(
    0,0,600,700);
          

          

            var endAngle = Math.PI*2;//结束角度
            var anticlockwise = true;//是否按照顺时针方向绘图
            for(var i =0;i<10;i++){
                context.beginPath();
                context.arc(i
    *25,i*25,i*10,0,endAngle,anticlockwise);
                context.closePath();
                context.fillStyle
    ='rgba(225,0,0,0.25)';
                context.fill();
            }
           
      }

     说明注意 :

    注意

    context.beginPath();
    context.closePath();
    放得位置,放在循环外和循环内有不同的效果哦。。。

     2:canvas lineTo(),moveTo()方法

    moveTo(x,y) 方法可把窗口的左上角移动到一个指定的坐标。

    lineTo(x,y) 方法为当前子路径添加一条直线。

    x,y坐标横纵坐标

    照旧实例:

    function drawMToL(canvas_id){
            
    var canvas_doc = document.getElementById(canvas_id);
          
    if(canvas_doc == null){return false;}
          
    var context = canvas_doc.getContext('2d');
          
    if(context == null){return false;}
          context.fillStyle 
    = "#EEEEFF";
          context.fillRect(
    0,0,600,700);
        
          context.beginPath();
          context.fillStyle 
    = '#64fa64';
          context.strokeStyle 
    = '#000064';

          context.moveTo(
    10,20);
          context.lineTo(
    40,50);
          context.lineTo(
    100,300);
          context.lineTo(
    10,20);
          context.closePath();
          context.fill();
          context.stroke();
      }

     说明:暂无

     注意:我觉得这2个方法是基础。。任何复杂的图形都缺其不可

     比如下面这个例子

     function drawLine_M(canvas_id){
            
    var canvas_doc = document.getElementById(canvas_id);
          
    if(canvas_doc == null){return false;}
          
    var context = canvas_doc.getContext('2d');
          
    if(context == null){return false;}
          context.fillStyle 
    = "#EEEEFF";
          context.fillRect(
    0,0,600,700);
          
    var dx = 150;
          
    var dy = 150;
          
    var s = 100;
          context.beginPath();
          context.fillStyle 
    = '#64fa64';
          context.strokeStyle 
    = '#000064';
          
    var x = Math.sin(0);
          
    var y = Math.cos(0);
          
    var dig = Math.PI/15*11;
          
          
    for (var i=0; i < 30; i++) {
              
    var x = Math.sin(i*dig);
              
    var y = Math.cos(i*dig);
              context.lineTo(dx
    +x*s,dy+y*s);
          };
          context.closePath();
          context.fill();
          context.stroke();
      }
  • 相关阅读:
    第七讲 宋词:婉约之曲与豪放之声
    P2024 食物链
    可以吹一年的事
    信息传递
    11.11模拟赛总结(又名斗地主战记)
    11.9模拟赛总结
    扩展欧几里得(exgcd模板)
    发糖果(拓扑排序模板)
    高斯消元
    关于我
  • 原文地址:https://www.cnblogs.com/blueSkys/p/2137716.html
Copyright © 2011-2022 走看看