HTML5 canvas基本绘图之图形组合

什么事情都可以拖一拖,没必要那么着急,事缓则圆。努力去做自己该做的,但是不要期待回报,不是付出了就会有回报的,做了就不要后悔,不做才后悔。

<canvas></canvas>只是一个绘制图形的容器,除了id、class、style等属性外,还有height和width属性。在<canvas>>元素上绘图主要有三步:

1.获取<canvas>元素对应的DOM对象,这是一个Canvas对象;
2.调用Canvas对象的getContext()方法,得到一个CanvasRenderingContext2D对象;
3.调用CanvasRenderingContext2D对象进行绘图。

图形组合:

•globalAlpha: 设置或返回绘图的当前 alpha 或透明值

该方法主要是设置图形的透明度,这里就不具体介绍。

•globalCompositeOperation: 设置或返回新图像如何绘制到已有的图像上,该方法有以下属性值:

下面是一个小示例,可以通过点击改变组合效果:

XML/HTML Code复制内容到剪贴板
  1. <!DOCTYPEhtml>
  2. <htmllang="en">
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>图形组合</title>
  6. <styletype="text/css">
  7. #canvas{
  8. border:1pxsolid#1C0EFA;
  9. display:block;
  10. margin:20pxauto;
  11. }
  12. #buttons{
  13. width:1000px;
  14. margin:5pxauto;
  15. clear:both;
  16. }
  17. #buttonsa{
  18. font-size:18px;
  19. display:block;
  20. float:left;
  21. margin-left:20px;
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <canvasid="canvas"width="1000"height="800">
  27. 你的浏览器还不支持canvas
  28. </canvas>
  29. <divid="buttons">
  30. <arel="nofollow noopener noreferrer" href="#">source-over</a>
  31. <arel="nofollow noopener noreferrer" href="#">source-atop</a>
  32. <arel="nofollow noopener noreferrer" href="#">source-in</a>
  33. <arel="nofollow noopener noreferrer" href="#">source-out</a>
  34. <arel="nofollow noopener noreferrer" href="#">destination-over</a>
  35. <arel="nofollow noopener noreferrer" href="#">destination-atop</a>
  36. <arel="nofollow noopener noreferrer" href="#">destination-in</a>
  37. <arel="nofollow noopener noreferrer" href="#">destination-out</a>
  38. <arel="nofollow noopener noreferrer" href="#">lighter</a>
  39. <arel="nofollow noopener noreferrer" href="#">copy</a>
  40. <arel="nofollow noopener noreferrer" href="#">xor</a>
  41. </div>
  42. </body>
  43. <scripttype="text/javascript">
  44. window.onload=function(){
  45. draw("source-over");
  46. varbuttons=document.getElementById("buttons").getElementsByTagName("a");
  47. for(vari=0;i<buttons.length;i++){
  48. buttons[i].onclick=function(){
  49. draw(this.text);
  50. returnfalse;
  51. };
  52. }
  53. };
  54. functiondraw(compositeStyle){
  55. varcanvas=document.getElementById("canvas");
  56. varcontext=canvas.getContext("2d");
  57. context.clearRect(0,0,canvas.width,canvas.height);
  58. //drawtitle
  59. context.font="bold40pxArial";
  60. context.textAlign="center";
  61. context.textBasedline="middle";
  62. context.fillStyle="#150E0E";
  63. context.fillText("globalCompositeOperation="+compositeStyle,canvas.width/2,60);
  64. //drawarect
  65. context.fillStyle="#F6082A";
  66. context.fillRect(300,150,500,500);
  67. //drawatriangle
  68. context.globalCompositeOperation=compositeStyle;
  69. context.fillStyle="#1611F5";
  70. context.beginPath();
  71. context.moveTo(700,250);
  72. context.lineTo(1000,750);
  73. context.lineTo(400,750);
  74. context.closePath();
  75. context.fill();
  76. }
  77. </script>
  78. </html>

读者可以点击标签来观察不同的组合效果,效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
您可能有感兴趣的文章
如何使用canvas对video视频某一刻截图功能

Canvas绘制像素风图片的示例代码

canvas画图被放大且模糊的如何解决方法

Canvas获取视频第一帧缩略图的如何实现

详解如何在Canvas中添加事件的方法