zoukankan      html  css  js  c++  java
  • canvas绘图小总结

    1.canvas绘制步骤

      ①在HTML5页面中添加canvas元素,定义id属性值以接下来调用。

      <canvas id="myCanvas" width="600" heigth="400"></canvas>

      ②使用id寻找页面中的canvas元素

      var c=document.getElementById("myCanvas");

      ③通过canvas元素的getContext方法来获取其上下文,即创建context对象,以获取允许进行绘制的2D环境

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

      ④使用js脚本来进行绘制

       context.fillStyle="#f00";

      context.fillRect(50,25,100,50);

    2.绘制直线

    (1)canvas绘制直线相关方法  

      开始:beginPath() 定义了一个新的路径绘制动作的开始

      起点:moveTo()

      终点: lineTo() 

      绘制: stroke() 为所画的线条赋颜色

    (2)绘制直线相关属性

      直线宽度:linewidth  直线颜色:strokeStyle

      直线端点样式(线帽):linecap,属性值为(butt,round,square)

    3.绘制弧线和曲线

      arcTo() 创建介于两个切线之间的弧/曲线

      quadraticCurveTo() 二次贝塞尔曲线

      bezierCurveTo() 三次贝塞尔曲线

    4.线条的连接样式

      lineJoin属性,属性值为(miter,round,bevel)

    5.canvas绘制简单图形

      矩形:rect() ,由左上角坐标(x,y)和矩形的宽高(width,height)确定。

      圆:arc() ,起始角度0,终点2*PI

      图形颜色填充:fillStyle设置颜色,使用fill()完成填充。

    6.绘制阴影

      阴影颜色:shadowColor           阴影模糊度:shadowBlur

      阴影与形状的水平距离:shadowOffsetX  阴影与形状的垂直距离:shadowOffsetY

      透明度:globalAlpha:0.0(完全透明)~1.0(完全不透明)

    7.绘制渐变

      ①线性渐变

      创建对象:var grad=context.createLinearGradient(x1,y1,x2,y2);(起点终点)

        上色:addColorStop();

      ②径向渐变:var grad=context.createRadialGradient(x1,y1,r1,x2,y2,r2);(圆心半径1,圆心半径2)

    8.绘制图案填充

      context.createPattern(image,type);

      type表示平铺类型:repeat /repeat-x /repeat-y /no-repeat

    9.绘制图像

      原始:context.drawImage(image Obj,x,y);

      指定:context.drawImage(image Obj,x,y,width,height);

      裁剪:context.drawImage(image Obj,sx,sy,sw,sh,dx,dy,dw,dh);

    10.绘制文本

      ①context.fillText(text,x1,y1);

      ②设置字体大小样式

        fond:normal/italic/bold

        fillStyle(颜色)

        strokeText() (文本边缘)

      ③绘制文本对齐

        textAlign属性:start/end/left/right/center

      ④文本度量

        measureText()

    11.图形的变换

     

     1 var canvas = document.getElementById("mycanvas");
     2 var context = canvas.getContext("2d");
     3 var rectWidth=150;
     4 var rectHeight=75;
     5 context.fillStyle="#ff0000";
     6  //把坐标原点移动到canvas中心点
     7 context.translate(canvas.width/2,canvas.height/2);
     8 //顺时针旋转45°
     9 context.rotate(0.25*Math.PI);
    10  //纵坐标向上缩小一半
    11 context.scale(1,0.5);
    12 context.fillRect(-rectWidth/2,-rectHeight/2,rectWidth,rectHeight);

    结果如下:

      

    12.图形的组合

     1             var canvas = document.getElementById("mycanvas");
     2             var context = canvas.getContext("2d");
     3             //绘制矩形
     4             context.beginPath();
     5             context.rect(200,20,100,100);
     6             context.fillStyle="blue";
     7             context.fill();
     8 
     9             //context.globalCompositeOperation = "source-over";//目标图像上显示源图像
    10             //context.globalCompositeOperation = "source-atop";//只绘制目标图像和新图形与目标图像重叠部分,
    11                                                                 // 新图形在原有图形之上
    12             //context.globalCompositeOperation = "source-in";//新图像在目标图像之内显示,目标图像是透明的
    13             //context.globalCompositeOperation = "source-out";//之外显示,目标图像是透明的
    14             context.globalCompositeOperation = "destination-atop";//只绘制目标图像和新图形与目标图像重叠部分,
    15                                                                     // 新图形在原有图形下层
    16             //context.globalCompositeOperation = "destination-in";
    17             //context.globalCompositeOperation = "destination-out";
    18             //context.globalCompositeOperation = "destination-over";
    19            // context.globalCompositeOperation = "lighter";//显示源图像+目标图像,两图形重叠部分加色处理
    20             //context.globalCompositeOperation = "darker";//两图形重叠部分减色处理
    21             //context.globalCompositeOperation = "xor";//重叠部分透明
    22             //context.globalCompositeOperation = "copy";//只显示源图像
    23 
    24             //绘制圆
    25             context.beginPath();
    26             context.arc(320,120,60,0,2*Math.PI);
    27             context.fillStyle="red";
    28             context.fill();
    29     

    结果如下:

      

    13.图形的裁切

      使用clip()方法

  • 相关阅读:
    拒绝服务攻击
    通过混合编程分析的方法和机器学习预测Web应用程序的漏洞
    防火墙与入侵防护系统
    恶意软件
    密码学
    纯真IP数据库(qqwry.dat)转换成最新的IP数据库格式(ipwry.dat)
    C++调用DLL方法
    QQ IP 地址查询相关
    【C/C++】概念: VC虚函数布局引发的问题
    DLL/EXE查看工具Dumpbin
  • 原文地址:https://www.cnblogs.com/jelina/p/7825755.html
Copyright © 2011-2022 走看看