sillycat 发表于 2013-1-24 06:46:05

HTML5(四) colorful world

HTML5(四) colorful world
1. basic color
stokeStyle is for line
fillStyle is for area

statement bellows are the same color.
ctx.fillStyle = "orange";
ctx.fillStyle = "#FFA500";
ctx.fillStyle = "rgb(255,165,0)";
ctx.fillStyle = "rgba(255,165,0,1)";

sample for 36 circles, test4.html:
<canvas id="canvas1" width="150" height="150" style=" background-color: black">
you are out!
</canvas>
<br/>
<input type="button" value="fillStyle"/>
<input type="button" value="strokeStyle"/>

<script type="text/javascript">
    function fillStyle() {
      var canvas = document.getElementById("canvas1");
      var ctx = canvas.getContext("2d");
      //clear the canvas
      ctx.clearRect(0,0,150,150);
      
      for (var i=0;i<6;i++){
            for (var j=0;j<6;j++){
                //set color values
                ctx.fillStyle = 'rgb(' + Math.floor(255-42.5*i) + ',' +Math.floor(255-42.5*j) + ',0)';
                //begin paint
                ctx.beginPath();
                //draw circle and i,j for the center of the circle
                ctx.arc(12.5+j*25,12.5+i*25,10,0,Math.PI*2,true);
                ctx.fill();
            }
      }
    }

    function strokeStyle() {
      var canvas = document.getElementById("canvas1");
      var ctx = canvas.getContext("2d");
      
      ctx.clearRect(0,0,150,150);
      for (var i=0;i<6;i++){
            for (var j=0;j<6;j++){
                ctx.strokeStyle = 'rgb(' + Math.floor(255-42.5*i) + ',' +Math.floor(255-42.5*j) + ',0)';
                ctx.beginPath();
                ctx.arc(12.5+j*25,12.5+i*25,10,0,Math.PI*2,true);
                ctx.stroke()
            }
      }
    }
</script>


2.Transparency

sample codes in file test4-1.html:
<canvas id="canvas2" width="150" height="150" style="background-position: center center;background-image:url(banner1.gif)">
    you are out!
</canvas>
<br />
Transparency<br />
<input type="button" value="0"/>
<input type="button" value="0.2"/>
<input type="button" value="0.4"/>
<input type="button" value="0.6"/>
<input type="button" value="0.8"/>
<input type="button" value="1"/>

<script type="text/javascript">
    function alphaTest1(alpah) {
      var canvas = document.getElementById("canvas2");
      var ctx = canvas.getContext("2d");
      
      ctx.clearRect(0,0,150,150);
      
      ctx.fillStyle="rgba(0,0,255,"+alpah+")"
      ctx.fillRect(20, 20, 110, 110)
    }
</script>

There is a property named globalAlpha, it is the controller of global alpha value.
my example file test4-2.html:
<canvasid="canvas3" width="150" height="150" style="background-position: center center;background-image:url(banner2.gif)">
    you are out!
</canvas><br/>
globalalpha:
<input type="button" value="0"/>
<input type="button" value="0.2"/>
<input type="button" value="0.4"/>
<input type="button" value="0.6"/>
<input type="button" value="0.8"/>
<input type="button" value="1"/>

<script type="text/javascript">
    function alphaTest2(alpah){
      var canvas = document.getElementById("canvas3");
      var ctx = canvas.getContext("2d");
      ctx.clearRect(0,0,150,150);
      //set globalalpha value
      ctx.globalAlpha=alpah
      
      ctx.fillStyle="red"
      ctx.fillRect(10, 10, 30, 30)
      ctx.fillStyle="green"
      ctx.fillRect(10, 50, 30, 30)
      ctx.fillStyle="blue"
      ctx.fillRect(10, 90, 30, 30)
      ctx.fillStyle="yellow"
      ctx.beginPath()
      ctx.arc(100, 75, 40, 0, 360)
      ctx.fill()
    }
</script>

3.gradients
we have 2 methods to create a object named canvasGradient.
one method: createLinearGradient(x1,y1,x2,y2)
       (x1,y1) begin point
                   (x2,y2) end point

createRadialGradient(x1,y1,r1,x2,y2,r2)
(x1,y1) r1 first circle
(x2,y2) r2 second circle

addColorStop(position,color)
position between 0.0 to 1.0

my test file test4-3.html:
<canvasid="canvas4" width="150" height="150" style=" background-color: black">
    you are out!
</canvas>
<br/>
gradient:
<input type="button" value="horizontal"/>
<input type="button" value="vertical"/>
<input type="button" value="bias"/>
<input type="button" value="mutation"/>
<input type="button" value="CircleOne"/>
<input type="button" value="CircleTwo"/>

<script type="text/javascript">
    function gradients1() {
      var ctx = document.getElementById('canvas4').getContext('2d');
      ctx.clearRect(0,0,150,150);
      //create line gradient object
      var lingrad = ctx.createLinearGradient(0,0,150,0);
      //add color
      lingrad.addColorStop(0, 'blue');
      lingrad.addColorStop(0.5, 'green');
      lingrad.addColorStop(1, 'white');
      ctx.fillStyle = lingrad;
      ctx.fillRect(10,10,130,130);
    }
    function gradients2() {
      var ctx = document.getElementById('canvas4').getContext('2d');
      ctx.clearRect(0,0,150,150);
      //create line
      var lingrad = ctx.createLinearGradient(0,0,0,150);
      
      lingrad.addColorStop(0, 'blue');
      lingrad.addColorStop(0.4, 'green');
      lingrad.addColorStop(1, 'white');
      ctx.fillStyle = lingrad;
      ctx.fillRect(10,10,130,130);
    }
    function gradients3() {
      var ctx = document.getElementById('canvas4').getContext('2d');
      ctx.clearRect(0,0,150,150);
      var lingrad = ctx.createLinearGradient(0,0,150,150);
      lingrad.addColorStop(0, 'blue');
      lingrad.addColorStop(0.5, 'green');
      lingrad.addColorStop(1, 'white');
      ctx.fillStyle = lingrad;
      ctx.fillRect(10,10,130,130);
    }
    function gradients4() {
      var ctx = document.getElementById('canvas4').getContext('2d');
      ctx.clearRect(0,0,150,150);
      var lingrad = ctx.createLinearGradient(0,0,0,150);
      lingrad.addColorStop(0, 'blue');
      lingrad.addColorStop(0.5, 'white');
      lingrad.addColorStop(0.5, 'green');
      lingrad.addColorStop(1, 'white');
      ctx.fillStyle = lingrad;
      ctx.fillRect(10,10,130,130);
    }
    function gradients5() {
      var ctx = document.getElementById('canvas4').getContext('2d');
      ctx.clearRect(0,0,150,150);
      var lingrad = ctx.createRadialGradient(75,75,10,75,75,70);
      lingrad.addColorStop(0, 'white');
      lingrad.addColorStop(1, 'rgba(255,255,255,0)');
      ctx.fillStyle = lingrad;
      ctx.arc(75, 75, 70, 0, 360);
      ctx.fill();
    }
    function gradients6() {
      var ctx = document.getElementById('canvas4').getContext('2d');
      ctx.clearRect(0,0,150,150);
      var lingrad = ctx.createRadialGradient(5,5,10,75,75,70);
      lingrad.addColorStop(0, 'white');
      lingrad.addColorStop(1, 'rgba(255,255,255,0)');
      ctx.fillStyle = lingrad;
      ctx.arc(75, 75, 70, 0, 360);
      ctx.fill();
    }
</script>

4.shadow

shadowOffsetX = float
shadowOffsetY = float
shadowBlur = float
shadowColor = color

shadowOffsetX and shadowOffsetY are the shadow distance of x and y;
shadowBlur is 0-1

my example file test4-4.html:
<canvasid="canvas5" width="150" height="150" style=" background-color: black">
    you are out!
</canvas><br/>
<input type="button" value="pic shadow"/>
<input type="button" value="txt shadow"/>

<script type="text/javascript">
    function shadow1() {
      var ctx = document.getElementById('canvas5').getContext('2d');
      ctx.clearRect(0,0,150,150);
      ctx.shadowOffsetX = 5;
      ctx.shadowOffsetY = 5;
      ctx.shadowBlur    = 4;
      ctx.shadowColor   = 'rgba(255, 0, 0, 0.5)';
      ctx.fillStyle   = 'blue';
      ctx.fillRect(10, 10, 130, 130);
    }

    function shadow2() {
      var ctx = document.getElementById('canvas5').getContext('2d');
      ctx.clearRect(0,0,150,150);
      ctx.shadowOffsetX = 4;
      ctx.shadowOffsetY = 3;
      ctx.shadowBlur = 2;
      ctx.shadowColor = "rgba(255, 255, 255, 0.5)";

      ctx.font = "20px Times New Roman";
      ctx.fillStyle = "red";
      ctx.fillText("Sample String", 15, 70);
    }
</script>

references:
http://www.blogjava.net/myqiao/category/46360.html
页: [1]
查看完整版本: HTML5(四) colorful world