zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    docker--docker介绍
    docker--虚拟化
    高级运维工程师的打怪升级之路
    mysql常用函数
    CentOS 7 下使用 Firewall
    51nod 1094 和为k的连续区间(map+前缀和)
    51nod 1092 回文字符串(dp)
    51nod 1062 序列中最大的数(打表预处理)
    51nod 1284 2 3 5 7的倍数(容斥原理+反面思考)
    51nod 1347 旋转字符串(思维好题)
  • 原文地址:https://www.cnblogs.com/suvllian/p/5452685.html
Copyright © 2011-2022 走看看