HTML5中使用Canvas绘制带阴影效果的图形

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);

例子

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="chrome=IE8">
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Canvas Clip Demo</title>
<link href="default.css" rel="stylesheet" />
 <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>
</head>
<body>
 <h1>HTML5 Canvas Clip Demo - By Gloomy Fish</h1>
 <pre>Fill And Stroke Clip</pre>
 <div id="my_painter">
  <canvas id="text_canvas"></canvas>
 </div>
</body>
</html>

时间: 2024-09-30 05:57:34

HTML5中使用Canvas绘制带阴影效果的图形的相关文章

利用HTML5中的Canvas绘制一张笑脸的教程

今天,你将            学习一项称为Canvas(画布)的web技术,以及它和文档对象模型(通常被称为DOM)的关联.这项技术非常强大,因为它使web开发人员能够通过使用JavaScript访问和修改HTML元素.          现在你可能想知道为什么我们需要大刀阔斧地使用JavaScript.简而言之,HTML和JavaScript是相互依存的,一些HTML组件,如canvas元素,并不能脱离JavaScript单独使用.毕竟,如果我们不能在上面绘图,那canvas能派什么用处呢

HTML5中的Canvas结合公式绘制粒子运动的教程

  最近想弄一个网页,把自己学HTML5过程中做的部分DEMO放上去做集合,但是,如果就仅仅做个网页把所有DEMO一个一个排列又觉得太难看了.就想,既然学了canvas,那就来折腾下浏览器,做个小小的开场动画吧. 开场动画的效果,想了一会,决定用粒子,因为觉得粒子比较好玩.还记得以前我写的第一篇技术博文,就是讲文字图片粒子化的:文字图片粒子化 , 那时就仅仅做的是直线运动,顺便加了一点3D效果.运动公式很简单.所以就想这个开场动画就做的更动感一些吧. 先上DEMO:http://2.axesca

HTML5中使用Canvas的使用样例1 (画布定义、绘制直线)

1,Canvas的定义 <canvas id="myCanvas" width="400" height="200"> 默认<canvas>画布在页面上会显示一块空白.无边框的矩形.为了让其显示轮廓,通过定义样式规则给其添加一个虚线边框: canvas {     border: 1px dashed black; } 2,获取Canvas的上下文对象 要完成绘图任务,首先我们要拿到<canvas>对象,接着取

求助!!html5中的canvas的问题。求指点。。。

问题描述 问题描述:我用canvas定义了一个图层.然后再这个上面绘制了一个圆,怎样实现鼠标经过这个圆变色,点击这个圆变色的行为啊...初学html5....求高手指点..代码如下:<!DOCTYPEhtml><html><head><title>text</title></head><body><canvasid="mycircle"width="400"height=&qu

Android中使用Canvas绘制南丁格尔玫瑰图(Nightingale rose diagram)_Android

南丁格尔玫瑰图 在常规图表中实在很惊艳,但我初看没看懂,一查原来南丁格尔这么伟大,确实值得尊敬. 再仔细研究了下这种图的构成,发现原来就是把柱形图的柱形换成了扇形图的半径来表示,当然,变种有好多,我这只是说我理解的这种. 知道了其构成方式后就好实现了,依传入参数个数决定其扇形角度,依百分比决定其扇形的半径长度,然后就一切都水到渠成了. 漂亮的美图献上: 附上实现代码: package com.xcl.chart; /** * Canvas练习 * 自已画南丁格尔玫瑰图(Nightingale r

Android中使用Canvas绘制南丁格尔玫瑰图(Nightingale rose diagram)

南丁格尔玫瑰图 在常规图表中实在很惊艳,但我初看没看懂,一查原来南丁格尔这么伟大,确实值得尊敬. 再仔细研究了下这种图的构成,发现原来就是把柱形图的柱形换成了扇形图的半径来表示,当然,变种有好多,我这只是说我理解的这种. 知道了其构成方式后就好实现了,依传入参数个数决定其扇形角度,依百分比决定其扇形的半径长度,然后就一切都水到渠成了. 漂亮的美图献上: 附上实现代码: package com.xcl.chart; /** * Canvas练习 * 自已画南丁格尔玫瑰图(Nightingale r

html5怎么使用canvas绘制一张图片

  代码如下: var canvas=document.getElementById("canvas"); var cxt=canvas.getContext("2d"); var img=new Image(); img.src="cat.jpg"; cxt.drawImage(img,10,10,490,382); /* 测试发现一个问题 在浏览器第一次执行的时候经常看不到图片, 在刷新一次后才能看到图片,有谁知道这是什么原因的,麻烦大神告诉

HTML5中Canvas(绘制)使用例子

Canvas中不仅可以画线(路径),还能画很多其他的图像,这一章就介绍Canvas的其他两种绘图API. 一.简单图形,整套的属性和方法专门用于绘制矩形: 1.fillStyle可以设置为CSS颜色.一个图案或一种颜色渐变.fillStyle默认是纯黑色,你可以设置成你喜欢的任意颜色.只要页面打开着,每个绘图上下文都会记录自己的属性,除非你重置过它. 2.fillRect(x,y,width,height)绘制一个矩形,并以当前的fillStyle来填充. 3.srtokeStyle和fillS

html5中canvas的使用 获取鼠标点击页面上某点的RGB

1.html5中的canvas在IE9中可以跑起来.在IE8则跑不起来,这时候就需要一些东西了. 我推荐这种方法,这样显得代码不乱. <!--[if lt IE9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> 需要谷歌的一个html5.js的文件即可. 注意:必须插入在<head></he