实例讲解如何使用HTML5 Canvas绘制阴影效果的方法

对于最有能力的领航人风浪总是格外的汹涌。第一个青春是上帝给的;第二个的青春是靠自己努力的。

创建阴影效果需要操作以下4个属性:

1.context.shadowColor:阴影颜色。
2.context.shadowOffsetX:阴影x轴位移。正值向右,负值向左。
3.context.shadowOffsetY:阴影y轴位移。正值向下,负值向上。
4.context.shadowBlur:阴影模糊滤镜。数据越大,扩散程度越大。
这四个属性只要设置了第一个和剩下三个中的任意一个就有阴影效果。不过通常情况下,四个属性都要设置。

例如,创建一个向右下方位移各5px的红色阴影,模糊2px,可以这样写。

JavaScript Code复制内容到剪贴板
  1. context.shadowColor="red";
  2. context.shadowOffsetX=5;
  3. context.shadowOffsetY=5;
  4. context.shadowBlur=2;

需要注意的是,这里的阴影同其他属性设置一样,都是基于状态的设置。因此,如果只想为某一个对象应用阴影而不是全局阴影,需要在下次绘制前重置阴影的这四个属性。
运行结果:

阴影文字:

只要设置shadowOffsetX与shadowOffsetY的值,当值都正数时,阴影相对文字的右下

方偏移。当值都为负数时,阴影相对文字的左上方偏移。

3D拉影效果:

在同一位置不断的重复绘制文字同时改变shadowOffsetX、shadowOffsetY、shadowBlur

的值,从小到大不断偏移不断增加,透明度也不断增加。就得到了拉影效果文字。

边缘模糊效果文字:

在3D拉影效果的基础上在四个方向重复,就得到了边缘羽化的文字效果。

运行效果:

程序代码:

JavaScript Code复制内容到剪贴板
  1. <!DOCTYPEhtml>
  2. <html>
  3. <head>
  4. <metahttp-equiv="X-UA-Compatible"content="chrome=IE8">
  5. <metahttp-equiv="Content-type"content="text/html;charset=UTF-8">
  6. <title>CanvasClipDemo</title>
  7. <linkrel="nofollow noopener noreferrer" href="default.css"rel="stylesheet"/>
  8. <script>
  9. varctx=null;//globalvariable2dcontext
  10. varimageTexture=null;
  11. window.onload=function(){
  12. varcanvas=document.getElementById("text_canvas");
  13. console.log(canvas.parentNode.clientWidth);
  14. canvas.width=canvas.parentNode.clientWidth;
  15. canvas.height=canvas.parentNode.clientHeight;
  16. if(!canvas.getContext){
  17. console.log("Canvasnotsupported.PleaseinstallaHTML5compatiblebrowser.");
  18. return;
  19. }
  20. varcontext=canvas.getContext('2d');
  21. //sectionone-shadowandblur
  22. context.fillStyle="black";
  23. context.fillRect(0,0,canvas.width,canvas.height/4);
  24. context.font='60ptCalibri';
  25. context.shadowColor="white";
  26. context.shadowOffsetX=0;
  27. context.shadowOffsetY=0;
  28. context.shadowBlur=20;
  29. context.fillText("BlurCanvas",40,80);
  30. context.strokeStyle="RGBA(0,255,0,1)";
  31. context.lineWidth=2;
  32. context.strokeText("BlurCanvas",40,80);
  33. //sectiontwo-shadowfont
  34. varhh=canvas.height/4;
  35. context.fillStyle="white";
  36. context.fillRect(0,hh,canvas.width,canvas.height/4);
  37. context.font='60ptCalibri';
  38. context.shadowColor="RGBA(127,127,127,1)";
  39. context.shadowOffsetX=3;
  40. context.shadowOffsetY=3;
  41. context.shadowBlur=0;
  42. context.fillStyle="RGBA(0,0,0,0.8)";
  43. context.fillText("BlurCanvas",40,80+hh);
  44. //sectionthree-downshadoweffect
  45. varhh=canvas.height/4+hh;
  46. context.fillStyle="black";
  47. context.fillRect(0,hh,canvas.width,canvas.height/4);
  48. for(vari=0;i<10;i++)
  49. {
  50. context.shadowColor="RGBA(255,255,255,"+((10-i)/10)+")";
  51. context.shadowOffsetX=i*2;
  52. context.shadowOffsetY=i*2;
  53. context.shadowBlur=i*2;
  54. context.fillStyle="RGBA(127,127,127,1)";
  55. context.fillText("BlurCanvas",40,80+hh);
  56. }
  57. //sectionfour-fadeeffect
  58. varhh=canvas.height/4+hh;
  59. context.fillStyle="green";
  60. context.fillRect(0,hh,canvas.width,canvas.height/4);
  61. for(vari=0;i<10;i++)
  62. {
  63. context.shadowColor="RGBA(255,255,255,"+((10-i)/10)+")";
  64. context.shadowOffsetX=0;
  65. context.shadowOffsetY=-i*2;
  66. context.shadowBlur=i*2;
  67. context.fillStyle="RGBA(127,127,127,1)";
  68. context.fillText("BlurCanvas",40,80+hh);
  69. }
  70. for(vari=0;i<10;i++)
  71. {
  72. context.shadowColor="RGBA(255,255,255,"+((10-i)/10)+")";
  73. context.shadowOffsetX=0;
  74. context.shadowOffsetY=i*2;
  75. context.shadowBlur=i*2;
  76. context.fillStyle="RGBA(127,127,127,1)";
  77. context.fillText("BlurCanvas",40,80+hh);
  78. }
  79. for(vari=0;i<10;i++)
  80. {
  81. context.shadowColor="RGBA(255,255,255,"+((10-i)/10)+")";
  82. context.shadowOffsetX=i*2;
  83. context.shadowOffsetY=0;
  84. context.shadowBlur=i*2;
  85. context.fillStyle="RGBA(127,127,127,1)";
  86. context.fillText("BlurCanvas",40,80+hh);
  87. }
  88. for(vari=0;i<10;i++)
  89. {
  90. context.shadowColor="RGBA(255,255,255,"+((10-i)/10)+")";
  91. context.shadowOffsetX=-i*2;
  92. context.shadowOffsetY=0;
  93. context.shadowBlur=i*2;
  94. context.fillStyle="RGBA(127,127,127,1)";
  95. context.fillText("BlurCanvas",40,80+hh);
  96. }
  97. }
  98. </script>
  99. </head>
  100. <body>
  101. <h1>HTML5CanvasClipDemo-ByGloomyFish</h1>
  102. <pre>FillAndStrokeClip</pre>
  103. <divid="my_painter">
  104. <canvasid="text_canvas"></canvas>
  105. </div>
  106. </body>
  107. </html>

到此这篇关于实例讲解如何使用HTML5 Canvas绘制阴影效果的方法就介绍到这了。志在必得心坚强,女神出马鬼难当,一路拿下收视率,当今女孩当自强。更多相关实例讲解如何使用HTML5 Canvas绘制阴影效果的方法内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

您可能有感兴趣的文章
HTML5之高度塌陷问题的如何解决

html5笛卡尔心形曲线的如何实现

如何使用feDisplacementMap+feImage滤镜如何实现水波纹效果(计算动态值)

如何使用canvas对video视频某一刻截图功能

Canvas如何做个雪花屏版404的如何实现