【html5中使用canvas绘制带阴影效果的图片】HTML5中使用Canvas绘制带阴影效果的图形

更新时间:2020-05-08    来源:html5教程    手机版     字体:

【www.bbyears.com--html5教程】

1,阴影的相关属性

HTML5 Canvas中提供了设置阴影的四个属性值分别为:

context.shadowColor = “red” 表示设置阴影颜色为红色

context.shadowOffsetX = 0表示阴影相对TEXT的水平距离,0表示两者水平位置重合

context.shadowOffsetY = 0表示阴影相对TEXT的垂直距离,0表示两者垂直位置重合

context.shadowBlur = 10 阴影模糊效果,值越大模糊越厉害。

shadowColor:阴影颜色(通常使用中性灰,也可使用半透明的颜色。)
shadowBlur:阴影的模糊程度(0表示锐利的阴影,即轮廓与原始形状一样鲜明。一般20就比较模糊了。)
shadowOffsetX、shadowOffsetY:阴影相对于内容的位置(两个属性都设5,表示阴影在原图形向下、向右各5个像素的位置)

一个最简单的带有阴影的矩形代码如下:

context.shadowColor = "RGBA(127,127,127,1)";

context.shadowOffsetX = 3;

context.shadowOffsetY = 3;

context.shadowBlur = 0;

context.fillStyle = "RGBA(0, 0, 0, 0.8)"; 

context.fillRect(10, hh+10, 200,canvas.height/4-20);

2,阴影的使用样例

var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
 
//绘制矩形阴影
context.rect(20, 20, 200 , 100);
context.fillStyle = "#8ED6FF";
context.shadowColor = "#bbbbbb";
context.shadowBlur = 20;
context.shadowOffsetX = 15;
context.shadowOffsetY = 15;
context.fill();
 
//绘制星形阴影
context.shadowOffsetX = 10;
context.shadowOffsetY = 10;
context.shadowBlur = 4;
var img = document.getElementById("star");
context.drawImage(img, 250, 30);
 
context.textBaseLine = "top";
context.font = "bold 20px Arial";
 
//绘制三行文本的阴影
context.shadowBlur = 3;
context.shadowOffsetX = 2;
context.shadowOffsetY = 2;
context.fillStyle = "steelblue";
context.fillText("Welcome to 111cn.net", 10, 175);
 
context.shadowBlur = 5;
context.shadowOffsetX = 20;
context.shadowOffsetY = 20;
context.fillStyle = "green";
context.fillText("Welcome to 111cn.net", 10, 225);
 
context.shadowBlur = 15;
context.shadowOffsetX = 0;
context.shadowOffsetY = 0;
context.shadowColor = "black"
context.fillStyle = "white";
context.fillText("Welcome to 111cn.net", 10, 290);

例子






Canvas Clip Demo

 <script>
  var ctx = null; // global variable 2d context
  var imageTexture = null;
  window.onload = function() {
   var canvas = document.getElementById("text_canvas");
   console.log(canvas.parentNode.clientWidth);
   canvas.width = canvas.parentNode.clientWidth;
   canvas.height = canvas.parentNode.clientHeight;
   
   if (!canvas.getContext) {
       console.log("Canvas not supported. Please install a HTML5 compatible browser.");
       return;
   }
   var context = canvas.getContext("2d");
   
   // section one - shadow and blur
   context.fillStyle="black";
   context.fillRect(0, 0, canvas.width, canvas.height/4);
   context.font = "60pt Calibri";
   
   context.shadowColor = "white";
   context.shadowOffsetX = 0;
   context.shadowOffsetY = 0;
   context.shadowBlur = 20;
   context.fillText("Blur Canvas", 40, 80);
   context.strokeStyle = "RGBA(0, 255, 0, 1)";
   context.lineWidth = 2;
   context.strokeText("Blur Canvas", 40, 80);
   
   // section two - shadow font
   var hh = canvas.height/4;
   context.fillStyle="white";
   context.fillRect(0, hh, canvas.width, canvas.height/4);
   context.font = "60pt Calibri";
   
   context.shadowColor = "RGBA(127,127,127,1)";
   context.shadowOffsetX = 3;
   context.shadowOffsetY = 3;
   context.shadowBlur = 0;
   context.fillStyle = "RGBA(0, 0, 0, 0.8)";
   context.fillText("Blur Canvas", 40, 80+hh);
   
   // section three - down shadow effect
   var hh = canvas.height/4 + hh;
   context.fillStyle="black";
   context.fillRect(0, hh, canvas.width, canvas.height/4);
   for(var i = 0; i < 10; i++)
   {
    context.shadowColor = "RGBA(255, 255, 255," + ((10-i)/10) + ")";
    context.shadowOffsetX = i*2;
    context.shadowOffsetY = i*2;
    context.shadowBlur = i*2;
    context.fillStyle = "RGBA(127, 127, 127, 1)";
    context.fillText("Blur Canvas", 40, 80+hh);
   }
   
   // section four -  fade effect
   var hh = canvas.height/4 + hh;
   context.fillStyle="green";
   context.fillRect(0, hh, canvas.width, canvas.height/4);
   for(var i = 0; i < 10; i++)
   {
    context.shadowColor = "RGBA(255, 255, 255," + ((10-i)/10) + ")";
    context.shadowOffsetX = 0;
    context.shadowOffsetY = -i*2;
    context.shadowBlur = i*2;
    context.fillStyle = "RGBA(127, 127, 127, 1)";
    context.fillText("Blur Canvas", 40, 80+hh);
   }
   for(var i = 0; i < 10; i++)
   {
    context.shadowColor = "RGBA(255, 255, 255," + ((10-i)/10) + ")";
    context.shadowOffsetX = 0;
    context.shadowOffsetY = i*2;
    context.shadowBlur = i*2;
    context.fillStyle = "RGBA(127, 127, 127, 1)";
    context.fillText("Blur Canvas", 40, 80+hh);
   }
   for(var i = 0; i < 10; i++)
   {
    context.shadowColor = "RGBA(255, 255, 255," + ((10-i)/10) + ")";
    context.shadowOffsetX = i*2;
    context.shadowOffsetY = 0;
    context.shadowBlur = i*2;
    context.fillStyle = "RGBA(127, 127, 127, 1)";
    context.fillText("Blur Canvas", 40, 80+hh);
   }
   for(var i = 0; i < 10; i++)
   {
    context.shadowColor = "RGBA(255, 255, 255," + ((10-i)/10) + ")";
    context.shadowOffsetX = -i*2;
    context.shadowOffsetY = 0;
    context.shadowBlur = i*2;
    context.fillStyle = "RGBA(127, 127, 127, 1)";
    context.fillText("Blur Canvas", 40, 80+hh);
   }
  }
  
 </script>


 

HTML5 Canvas Clip Demo - By Gloomy Fish


 
Fill And Stroke Clip

 
  
 

本文来源:http://www.bbyears.com/wangyezhizuo/93428.html