• HTML5 Canvas游戏开发(二)高级功能


      一、变形

      1、放大和缩小

      scale(X,Y)函数。

      当使用该函数时,其起始坐标值也被放大或缩小。当X、Y为负值时,可以实现翻转。

      2、平移变换

      translate(X,Y)函数。

      表示水平方向向左移动,竖直方向向下移动。

      3、旋转变换

      rotate(角度)函数。

      旋转一定角度,是以canvas的起始坐标坐标(0,0)为中心旋转。可使用translate修改canvas的中心。

      4、setTransfrom函数实现倾斜效果

      可使用transfrom()函数代替上述三种函数的功能。

      二、图形的渲染

      1、线性渐变

      使用createLinearGradient函数和addColorStop函数可以实现线性渐变。

      createLinearGradient(x1,y1,x2,y2)

      其中四个参数分别是渐变的出发点坐标(x1,y1)与终点坐标(x2,y2)。

      addColorStop(position,color)

      其中position表示从0.0到1.0之间的数值,表示渐变中颜色地点的相对低位;color参数表示渐变的颜色。

    var grd = ctx.createLinearGradient(0,0,200,0);   线性渐变
    grd.addColorStop(0.2,"#00ff00");
    grd.addColorStop(0.8,"#ff0000");
    ctx.fillStyle = grd;
    ctx.fillRect(0,0,200,100);

       2、径向渐变

      通过createRadialGradient函数和addColorStop函数实现径向渐变功能。

      createRadialGradient(x0,y0,r0,x1,y1,r1)

      其中,参数x0,y0表示开始圆的圆心坐标,r0为开始圆的直径;x1,y1为结束圆的圆心坐标,r0为结束圆的半径。

    var grd = ctx.createRadialGradient(100,100,10,100,100,50);   径向渐变
    grd.addColorStop(0,"#00ff00");
    grd.addColorStop(1,"#ff0000");
    ctx.fillStyle = grd;
    ctx.fillRect(0,0,200,200);

      3、颜色合成

      globalCompositeOperation属性说明绘制到画布上的颜色如何与画布上的已有颜色组合起来。

    ctx.fillStyle = "#00ff00";   //颜色合成
    ctx.fillRect(10,10,50,50);
    ctx.globalCompositeOperation = "source-over";
    ctx.beginPath();
    ctx.fillStyle = "#ff0000";
    ctx.arc(50,50,30,0,2*Math.PI);
    ctx.fill();

      4、颜色反转

      指的是对图形的每个像素进行颜色取反。

      5、灰度控制

      将图片变成灰色。

      6、阴影效果

      阴影的颜色可以通过shadowColor属性来指定。并且可以通过shadowOffsetX和shadowOffsetY属性来改变。应用到阴影边缘的羽化量可以通过shadowBlur属性来设置。

        ctx.shadowColor="#ff0000";
        ctx.shadowBlur=100;
        ctx.shadowOffsetX=20;
        ctx.shadowOffsetY=30;
        var image = new Image()
        image.src = "1.jpg";
        image.onload = function(){
            ctx.drawImage(image,0,0);
        }

      下面讲述一个小案例的实现:一个画板。

      代码连接如下:http://www.oschina.net/code/snippet_2685955_55850

      当鼠标按下时调用down函数,将按下标记置为true。并且获取当前鼠标的位置。

      当鼠标移动时调用draw函数。判断当按下标记为true时,获取新的鼠标位置,并开始画图。

      当鼠标弹起时调用up函数。将按下标记置为false。

  • 相关阅读:
    matplotlib基础汇总_04
    【C语言】输入一个三位数,逆序输出
    利用 Termux 配合 ksweb 进行内网穿透
    【安卓开发】AndroidStudio项目提交到github最详细步骤
    【安卓开发】启动另一个 Activity
    【安卓开发】AS神奇的报错:Cannot find AVD system path. Please define ANDROID_SDK_ROOT
    【安卓开发】按钮点击事件
    【Python】我的第一个EXE程序
    【Python】pyinstaller安装失败的解决办法
    OI生涯回忆录(未完毕)
  • 原文地址:https://www.cnblogs.com/suvllian/p/5452685.html
Copyright © 2020-2023  润新知