• canvas之2D上下文


    1.填充和描边

    (1)fillStyle

    (2)strokeStyle

    2.绘制矩形

    (1)fillRect()

    (2)strokeRect()

    (3)clearRect()   :清除画布上的矩形区域

    <canvas id = "drawing" width="400px" height="400px" style="background-color: #d1f1ff"></canvas>
     1         var drawing = document.getElementById("drawing");
     2         if(drawing.getContext){
     3             var ct = drawing.getContext("2d");
     4         }
     5 
     6         ct.fillStyle = "#ff0000";
     7         ct.fillRect(10,10,50,50);
     8 
     9         ct.fillStyle = "rgba(0,0,255,0.5)";
    10         ct.fillRect(30,30,50,50);
    11 
    12         ct.clearRect(40,40,10,10);

    3.绘制路径

      (1)arc(x,y,radius,startAngle,endAngle,countercockwise) 

          以(x,y)画圆,radius为半径,startAngle:起始角度,endAngle:结束角度,countercockwise:是否按逆时针方向转动,false表示按逆时针转动。

      (2)arcTo(x1,y1,x2,y2,radius)  

          从(x1,y1)到(x2,y2)画一条半径为radius的弧线

      (3)bezierCurveTo(c1x,c1y,c2x,c2y,x,y) 

         贝塞尔曲线,详细的看我的SVG--贝塞尔曲线的博客

      (4)lineTo(x,y) 

         从上一点开始画一条线到(x,y)

      (5)moveTo(x,y)

          将绘图游标移到(x,y)

      (6)quadraticCurveTo(cx,cy,x,y)  

         绘制二次曲线到(x,y),以(cx,cy)作为控制点

      (7)rect(x,y,width,height)

         从(x,y)开始绘制一个矩形

    4.绘制文本

      font: 文本样式,大小,字体

      textAlign:文本对齐方式(start,end,left,right,center)

      textBaseline :文本的基线

      ct.fillText("文本",100,20):

    5.变换

      rotate(): 旋转

      scale():缩放

      translate(x,y) :移动到(x,y)

      transform():

      setTransform():

     1     ct.beginPath();
     2     //外圆
     3     ct.arc(100,100,99,0, 2*Math.PI ,false);
     4 
     5     //内圆
     6     ct.moveTo(194,100);
     7     ct.arc(100,100,94,0, 2*Math.PI ,false);
     8 
     9     ct.translate(100,100);
    10     //旋转
    11     ct.rotate(90*Math.PI/180);
    12 
    13     ct.moveTo(0,0);
    14     ct.lineTo(0,-85);
    15 
    16     ct.moveTo(0,0);
    17     ct.lineTo(-65,0);
    18 
    19     ct.stroke();

    这是旋转90度后

    6.绘制图像

    1 var img = new Image();
    2     img.src = "share1.jpg";
    3 
    4     ct.drawImage(img ,0,0,120,120);

    7.阴影

      阴影共四个属性设置:

      shadowColor :阴影颜色

      shadowBlur :模糊像素数

      shadowOffsetX :阴影偏移量

      shadowOffsetY :阴影偏移量

     1     //设置阴影
     2     ct.shadowColor="rgba(0,0,0,0.5)";
     3     ct.shadowBlur = 4;
     4     ct.shadowOffsetX = 5;
     5     ct.shadowOffsetY = 5;
     6 
     7     //红色矩形
     8     ct.fillStyle="#ff0000"
     9     ct.fillRect(10,10,50,50);
    10 
    11     //蓝色矩形
    12     ct.fillStyle="rgba(0,0,255,1)"
    13     ct.fillRect(30,30,50,50);
    14     ct.stroke();

    8.渐变

    渐变由CanvasGradient实例表示。

    创建线性渐变:createLinearGradient(x,y,_x,_y)

    创建线性渐变:createRadialGradient(x,y,radius,_x,_y,_radius)

    (1)线性渐变:

     1     //红色矩形
     2     ct.fillStyle="#ff0000"
     3     ct.fillRect(10,10,50,50);
     4 
     5     //渐变色矩形
     6     var gradient = ct.createLinearGradient(30,30,70,70);
     7     gradient.addColorStop(0,"white");
     8     gradient.addColorStop(1,"black")
     9 
    10     ct.fillStyle=gradient;
    11     ct.fillRect(30,30,50,50);
    12     ct.stroke();

     1     //用于更好定位的渐变函数
     2     function createRectLinearGradient(context,x,y,width,height){
     3         return context.createLinearGradient(x,y,x+width,y+height);
     4     }
     5 
     6     //渐变色矩形
     7     var gradient = createRectLinearGradient(ct,30,30,50,50);
     8     gradient.addColorStop(0,"white");
     9     gradient.addColorStop(1,"black")
    10 
    11     ct.fillStyle=gradient;
    12     ct.fillRect(30,30,50,50);
    13     ct.stroke();

    (2)径向渐变:

    前三个参数为起点圆的圆心和半径,后三个参数为终点圆的圆心和半径

     1     //红色矩形
     2     ct.fillStyle="#ff0000"
     3     ct.fillRect(10,10,50,50);
     4 
     5 
     6     //径向渐变
     7     var gt = ct.createRadialGradient(55,55,10,55,55,30);
     8     gt.addColorStop(0,"white");
     9     gt.addColorStop(1,"black");
    10     ct.fillStyle = gt;
    11     ct.fillRect(30,30,50,50);

    9.渐变

    渐变由CanvasGradient实例表示。

    创建线性渐变:createLinearGradient(x,y,_x,_y)

    创建线性渐变:createRadialGradient(x,y,radius,_x,_y,_radius)

    (1)线性渐变:

  • 相关阅读:
    【算法】八皇后问题 Python实现
    【算法】摩尔投票
    【数据结构】 二叉树
    【Manacher算法】最长子回文串
    缓存 和 数据库 数据一致性
    python网络编程
    python网络编程
    python
    算法
    Docker使用
  • 原文地址:https://www.cnblogs.com/xinxingyu/p/4748543.html
Copyright © 2020-2023  润新知