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

    为了研究pixi库,就顺带从头到位学习下canvas吧

    判断支持力度

    var webgl = (function() {
        try {
            var canvas = document.createElement('canvas');
            return !!window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl'));
        } catch (e) {
            return false;
        }
    })();

    getContext方法指定参数2d,表示该canvas对象用于生成2D图案(即平面图案)。如果参数是3d,就表示用于生成3D图像(即立体图案),这部分实际上单独叫做WebGL API

     

    绘制路径

    • beginPath方法表示开始绘制路径
    • moveTo(x, y)方法设置线段的起点
    • lineTo(x, y)方法设置线段的终点
    • stroke方法用来给透明的线段着色
        //////////
        //绘制路径 //
        //////////
        context.beginPath()
        context.moveTo(20, 20)
        context.lineTo(30, 30)
        context.moveTo(100, 150)
        context.lineTo(150, 200)
        context.lineWidth = 2
        context.strokeStyle = "red"
        context.stroke()

     

    绘制矩形

    • fillRect(x, y, width, height)方法用来绘制矩形,它的四个参数分别为矩形左上角顶点的x坐标、y坐标,以及矩形的宽和高。fillStyle属性用来设置矩形的填充色
    • strokeRect方法与fillRect类似,用来绘制空心矩形
    • clearRect方法用来清除某个矩形区域的内容
        //////////
        //绘制路径 //
        //////////
        context.beginPath()
        context.moveTo(20, 20)
        context.lineTo(30, 30)
        context.moveTo(100, 150)
        context.lineTo(150, 200)
        context.lineWidth = 2
        context.strokeStyle = "red"
        context.stroke()

     

    绘制文本

    • fillText(string, x, y) 用来绘制文本,它的三个参数分别为文本内容、起点的x坐标、y坐标。使用之前,需用font设置字体、大小、样式(写法类似与CSS的font属性)。与此类似的还有strokeText方法,用来添加空心字
    • fillText方法不支持文本断行,即所有文本出现在一行内。所以,如果要生成多行文本,只有调用多次fillText方法。
        //////////
        //绘制路径 //
        //////////
        context.beginPath()
        context.moveTo(20, 20)
        context.lineTo(30, 30)
        context.moveTo(100, 150)
        context.lineTo(150, 200)
        context.lineWidth = 2
        context.strokeStyle = "red"
        context.stroke()

     

    绘制圆形和扇形

    arc方法用来绘制扇形

    ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);

    arc方法

    • x和y参数是圆心坐标
    • radius是半径
    • startAngle和endAngle则是扇形的起始角度和终止角度(以弧度表示)
    • anticlockwise表示做图时应该逆时针画(true)还是顺时针画(false)
        //////////
        //绘制路径 //
        //////////
        context.beginPath()
        context.moveTo(20, 20)
        context.lineTo(30, 30)
        context.moveTo(100, 150)
        context.lineTo(150, 200)
        context.lineWidth = 2
        context.strokeStyle = "red"
        context.stroke()

     

    设置渐变色

    createLinearGradient方法用来设置渐变色。

    createLinearGradient方法的参数是(x1, y1, x2, y2),其中x1和y1是起点坐标,x2和y2是终点坐标。通过不同的坐标值,可以生成从上至下、从左到右的渐变等等。

        /////////
        //渐变色 //
        /////////
        var myGradient = context.createLinearGradient(0, 0, 0, 60); 
        myGradient.addColorStop(0, "#BABABA");
        myGradient.addColorStop(1, "#636363");
        context.fillStyle = myGradient;
        context.fillRect(10,250,200,100);

     

    设置阴影

    /////////
        //渐变色 //
        /////////
        var myGradient = context.createLinearGradient(0, 0, 0, 60); 
        myGradient.addColorStop(0, "#BABABA");
        myGradient.addColorStop(1, "#636363");
        context.fillStyle = myGradient;
        context.fillRect(10,250,200,100);

     



  • 相关阅读:
    windows下多个python版本共存,删掉一个
    解决ModuleNotFoundError: No module named 'pip'问题
    Palindrome Linked List 综合了反转链表和快慢指针的解法
    30-Day Leetcoding Challenge Day9
    Longest Common Prefix 五种解法(JAVA)
    30-Day Leetcoding Challenge Day8
    30-Day Leetcoding Challenge Day7
    30-Day Leetcoding Challenge Day6
    30-Day Leetcoding Challenge Day2
    leetcode162 Find Peak Element
  • 原文地址:https://www.cnblogs.com/aaronjs/p/4268122.html
Copyright © 2011-2022 走看看