• HTML5 Canvas


    目前大部分新型浏览器器实现了HTML5 Canvas 原声的绘图API,但只支持2D渲染环境,这里创建一个空白的画布元素

    <canvas width="500" height="500"></canvas>

    IE9一下的IE浏览器不支持画布元素,在这些浏览器上,我们有两个选择:

    1、当浏览器不支持画布时显示提示,可能是一段提醒用户升级浏览器的文案,画布的innerHTML就是画布的提示信息。

    2、使用ExplorerCanvas脚本兼容老版本的IE浏览器,不过有弊病,脚本文件比较大(99KB),而且需要在onload执行画布相关脚本才能生效。


    上下文对象

    操作图形需使用画布的上下文对象,可以通过以下方法获取上下文

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

    线条

    context.moveTo(40,40);//将笔移动到(40,40)
    
    context.lineTo(340,40);//用笔画线到(340,40)
    
    context.stroke();//让线条描绘出来

    路径

    线条除了绘制直线,还可以勾出路径

      1、绘制三根线条

    context.moveTo(40,40);  
    
    context.lineTo(340,40);
    
    context.lineTo(340,100);
    
    context.lineTo(40,100);
    
    context.stroke();

      2、绘制第一根线条前,标记一个路径的开始,由效果图看出,第一条线没有显示出来,相当于beginPath之前的代码没有起作用

    context.moveTo(40,40);
    
    context.beginPath();
    
    context.lineTo(340,40);
    
    context.lineTo(340,100);
    
    context.lineTo(40,100);
    
    context.stroke();

      3、在绘制线条之前标记路径结束。路径将进行闭合

    context.beginPath();
    
    context.moveTo(340,40);
    
    context.lineTo(340,100);
    
    context.lineTo(40,100);
    
    context.closePath();
    
    context.stroke();

      4、填充路径圈定区域

    context.beginPath();
    
    context.moveTo(340,40);
    
    context.lineTo(340,100);
    
    context.lineTo(40,100);
    
    context.closePath();
    
    context.fill();

      5、如果路径没有闭合,填充前将自动闭合路径

    context.beginPath();
    
    context.moveTo(340,40);
    
    context.lineTo(340,100);
    
    context.lineTo(40,100);
    
    context.fill();

      6、如果路径上的点在一根线条上.无法圈定区域,将显示空白

    context.beginPath();
    
    context.moveTo(340,40);
    
    context.lineTo(340,100);
    
    context.lineTo(340,150);
    
    context.fill(); 

     矩形

    绘画矩形有用于勾画矩形和填充矩形使用的两个方法

    context.strokeRect(x,y,width,height);//只勾画出矩形的外框
    
    context.fillRect(x,y,width,height);//画出矩形并使用颜色填充矩形区域

    圆形

    圆形与矩形不同,没有勾画和填充的方法,可通过arc圈出来的是圆形路径,再通过前面提及的stroke和fill方法进行勾画和填充。

    context.arc(x,y,radius,strartAngle,endAngle,anticlockwise);
    
    这一共有6个参数,x是圆心的横坐标,y是圆心的纵坐标,radius是半径,startAngle是开始画园的角度,endAngle是结束花园的角度,anticlockwise是画圆方向。
    
    startAngle和endAngle的角度使用弧度计算,整圆弧度2π,将弧度和角度换算方式如下
    
    var radians=degrees*(Math.PI/180);//radians是弧度,degrees是角度
    
    anticlockwise是可选项,默认值是false,使用逆时针。
    
    context.beginPath();
    
    context.arc(230,90,60,Math.PI*-1/4,Math.PI*3/4);//从-1/4π到3/4π,以(230,90)为圆心,半径60px画圆。
    
    context.closePath();
    
    context.fill();

    文本

    除了绘制图形,还可以往画布上插入文本,但该文本不是真实的文字,而是栅格化的图形,绘制文本有两种方法,分别是用于描边的strokeText和用于填字的fillText方法

    var text="Hello,World!";
    
    context.fillText(text,x,y);
    
    此处text是文本的内容,x是画布左边到文字左边的距离,y是画布上边到文字下边的距离

    因为在默认情况下,使用10px sans-serif为文本属性,除了修改文字大小,还可以通过修改font属性来修改文本属性

    var text="Hello,World!";
    
    context.font="italic 60px serif";
    
    context.fillText(text,40,40);
    
    font属性与css中的font属性值可以通用

     来自:http://www.neoease.com/html5-canvas-line-rectangle-circle-text/ 

  • 相关阅读:
    Pyechart——学习
    matplotlib——散点图、条形图、直方图
    matplotlib——折线图
    寻找n以内的亲密数对
    Golang判断时间点处于今天
    寒假作业3
    寒假作业2
    面向对象程序设计寒假作业1
    自我介绍
    关于cve2019_0708的反弹shell
  • 原文地址:https://www.cnblogs.com/beng/p/3512419.html
Copyright © 2020-2023  润新知