zoukankan      html  css  js  c++  java
  • HTML5中的canvas

    HTML5中的<canvas>标签用于绘制图像,但它本身并没有绘图的能力,需要使用js进行绘制图形!

    js中的getContext() 方法可以返回一个对象,该对象提供了用于在画布上绘图的方法和属性。

    类如下列的使用方法:

    1、绘制矩形

    <canvas  id="myCanvas" width="300" height="300" style="border:1px solid #d3d3d3;"></canvas>
    <script>
    var canvas = document.getElementById("myCanvas");//获取canvas
    var ctx = canvas.getContext("2d"); //创建一个2D的getContext()的对象 
    ctx.fillStyle = "blue"; // 设置绘制图像为蓝色
    ctx.fillRect(20,20,150,150); //设置为填充绘画颜色
    </script>

    fillRect(x0,y0,x1,y1)的作用是填充图像 四个参数都是以<canvas>的绘图区域为坐标,

    分别为:

    x0 : 起始的x轴坐标

    y0 : 起始的y轴坐标

    x1 : 结束的x轴坐标

    y1 : 结束的y轴坐标

    strokeRect(x0,y0,x1,y1)的作用是绘制一个矩形(没有填充),参数与上面的相同

    如图所示:

    2、绘制直线

    beginPath()  起始一条路径,或重置当前路径(就像是拿起笔说我拿笔了,准备画图了)

    moveTo(x,y)  把开始路径移动到画布中的指定点,不创建线条(也可以理解为开始点)

    lineTo(x,y) 添加一个新点,然后在画布中创建从该点到最后指定点的线条,同时也会创建连接起始点的线条

    stroke()  绘制已定义的路径

    参数:

     x :x轴坐标   y :y轴坐标

    如下所示绘制一个“v”

    var canvas = document.getElementById("myCanvas");//获取canvas
    var ctx = canvas.getContext("2d"); //创建一个2D的getContext()的对象 
    ctx.beginPath(); ctx.moveTo(20,20); ctx.lineTo(50,90) ctx.lineTo(80,20) ctx.stroke();

    若想要绘制直线只需写有一个lineTo(x,y)即可

    3、绘制圆

    arc(x,y,r,sAngle,eAngle,counterclockwise)

    参数:

    x : 圆心坐标的x轴

    y : 圆心坐标的y轴

    r :圆的半径

    sAngle :绘制圆的起始角位置,以弧度计算

    eAngle :绘制圆的结束角位置,以弧度计算

    counterclockwise : 确定是以顺时针绘制,还是逆时针绘制  False = 顺时针,true = 逆时针。(可选)

    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    ctx.beginPath(); 
    ctx.arc(100,75,50,0,2*Math.PI);
    ctx.stroke();

    若绘制实心圆,stroke()改为fill()即可 ,ctx.fillStyle = "blue" 设置填充色

    4、渐变

    context.createLinearGradient(x0,y0,x1,y1);方法创建线性的渐变对象。

    参数:

    x0 : 渐变起始的x轴坐标

    y0 : 渐变起始的y轴坐标

    x1 : 渐变结束的x轴坐标

    y1 : 渐变结束的y轴坐标

    gradient.addColorStop(stop,color); stop 规定渐变对象中的颜色和停止位置 介于 0.0 与 1.0 之间的值,表示渐变中开始与结束之间的位置。

    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    var grd=ctx.createLinearGradient(0,0,200,0);
    grd.addColorStop(0,"red");
    grd.addColorStop(0.5,"blue"); grd.addColorStop(
    1,"white"); ctx.fillStyle=grd; ctx.fillRect(20,20,200,100);

    将结束坐标给为y轴上则为横向渐变

    context.createRadialGradient(x0,y0,r0,x1,y1,r1); 方法创建圆的渐变对象。

    参数:

    x0 : 渐变起始的x轴坐标

    y0 : 渐变起始的y轴坐标

    r0 : 渐变起始的半径

    x1 : 渐变结束的x轴坐标

    y1 : 渐变结束的y轴坐标

    r1 : 渐变结束的半径

    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    var grd=ctx.createRadialGradient(75,50,5,90,60,100);
    grd.addColorStop(0,"red");
    grd.addColorStop(0.5,"blue");
    grd.addColorStop(1,"white");
    ctx.fillStyle=grd;
    ctx.fillRect(20,20,200,100);

  • 相关阅读:
    Eclipse怎么汉化
    eclipse的 project explore找不到了, 怎么把复制来的包放在project explore
    三 地图的绘制
    二 CheatEngine怎么提取地图数据
    一. 透明坦克跑起来
    第七章 继承与派生
    Quoit Design HDU
    C++学习_从C到C++
    C++学习_一道程序填空题重拾C++
    网络爬虫_BeautifulSoup库入门
  • 原文地址:https://www.cnblogs.com/nie5135257/p/10653873.html
Copyright © 2011-2022 走看看