HTML5使用Canvas来绘制图形

一、Canvas标签:

1、HTML5<canvas>元素用于图形的绘制,通过脚本(通常是javascript)来完成。

2、<canvas>标签只是图形容器,必须使用脚本来绘制图形。

3、可以通过多种方法通过Canvas绘制路径、盒、圆、字符以及添加图像。

二、Canvas绘制图形

1、绘制矩形


2、绘制圆形

3、moveTo和lineTo

4、使用bezierCurveTo绘制贝塞尔曲线

5、绘制线性渐变

6、绘制径向渐变

7、绘制变形图形

8、绘制图形合成gloablCompositeOperation属性

使用不同的 globalCompositeOperation 值绘制矩形。橙色矩形是目标图像。粉色矩形是源图像。

定义和用法

globalCompositeOperation属性设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上。

源图像 = 您打算放置到画布上的绘图。

目标图像 = 您已经放置在画布上的绘图。

属性值:

属性
source-atop 在先绘制的图形顶部显示后绘制的图形。后绘制的图形位于先绘制的图形之外的部分是不可见的。
source-in 只绘制相交部分,由后绘制图形的填充覆盖,其余部分透明。
source-out 只绘制后绘制图形不相交的部分,由后绘制图形的填充覆盖,其余部分透明。
source-over 在先绘制的图形上显示后绘制的图形。相交部分由后绘制的图形填充(颜色,渐变,纹理)覆盖
destination-atop 在后绘制的图形顶部显示先绘制的图形。源图像之外的目标图像部分不会被显示。
destination-in 在后绘制的图形中显示先绘制的图形。只绘制相交部分,由先绘制图形的填充覆盖,其余部分透明
destination-out 只有后绘制的图形外的目标图像部分会被显示,源图像是透明的。
destination-over  相交部分由先绘制图形的填充(颜色,渐变,纹理)覆盖.
lighter 相交部分由根据先后图形填充来增加亮度。
copy 显示后绘制的图形。只绘制后绘制图形。
xor 相交部分透明

以上效果图的代码如下:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8">
 5     <title></title>
 6     <script src="../js/jquery-1.12.4.min.js"></script>
 7     <script>
 8         $(function(){
 9             var options = new Array(
10                     "source-atop",
11                     "source-in",
12                     "source-out",
13                     "source-over",
14                     "destination-atop",
15                     "destination-in",
16                     "destination-out",
17                     "destination-over",
18                     "lighter",
19                     "copy",
20                     "xor"
21             );
22             var str="";
23             for(var i=0;i<options.length;i++){
24                  str = "<div id=‘p_"+i+"‘ style=‘float:left‘>"+options[i]+"<br/><canvas id=‘canvas"+i+"‘ width=‘120px‘ height=‘100px‘ style=‘border:1px solid #ccc;margin:10px 2px 20px;‘></canvas></div>";
25                 $("body").append(str);
26                 var cas = document.getElementById(‘canvas‘+i);
27                 var ctx = cas.getContext(‘2d‘);
28                 ctx.fillStyle = "orange";
29                 ctx.fillRect(10,10,50,50);
30                 ctx.globalCompositeOperation = options[i];
31                 ctx.beginPath();
32                 ctx.fillStyle = "pink";
33                 ctx.arc(50,50,30,0,2*Math.PI);
34                 ctx.fill();
35             }
36         })
37     </script>
38 </head>
39 <body></body>
40 </html>

图形合成

9、给图形绘制阴影

代码如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>canvas基础api</title>
 6     <style>
 7         canvas{
 8             border:1px solid #ccc;
 9             margin:50px;
10         }
11     </style>
12     <script src="../js/jquery-1.12.4.min.js"></script>
13     <script>
14         $(function(){
15             //获取标签
16             var cas = document.getElementById(‘canvas‘);
17             //获取绘制环境
18             var ctx = cas.getContext(‘2d‘);
19             ctx.fillStyle ="#eef";
20             ctx.fillRect(0,0,300,300);
21             ctx.shadowOffsetX = 10;
22             ctx.shadowOffsetY = 10;
23             ctx.shadowColor = "rgba(100,100,100,0.5)";
24             ctx.shadowBlur = 7;
25             for(var j=0;j<3;j++){
26                 ctx.translate(80,80);
27                 create5star(ctx);
28                 ctx.fill();
29             }
30             function create5star(ctx){
31                 var dx =0;
32                 var dy=0;
33                 var s=50;
34                 ctx.beginPath();
35                 ctx.fillStyle =‘rgba(255,0,0,0.5)‘;
36                 var x =Math.sin(0);
37                 var y =Math.cos(0);
38                 var dig = Math.PI/5*4;
39                 for(var i=0;i<5;i++){
40                     x=Math.sin(i*dig);
41                     y=Math.cos(i*dig);
42                     ctx.lineTo(dx+x*s,dy+y*s)
43                 }
44                 ctx.closePath();
45                 ctx.fill();
46             }
47
48         })
49     </script>
50 </head>
51 <body>
52     <canvas id="canvas" width="300" height="300">您的浏览器不支持canvas</canvas>
53 </body>
54 </html>

五角星阴影

10、canvas使用图像

语法:ctx.drawImage(imgobj,left,top,width,height)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>canvas基础api</title>
 6     <style>
 7         canvas{
 8             border:1px solid #ccc;
 9         }
10     </style>
11     <script src="../js/jquery-1.12.4.min.js"></script>
12     <script>
13         $(function(){
14             //获取标签
15             var cas = document.getElementById(‘canvas‘);
16             //获取绘制环境
17             var ctx = cas.getContext(‘2d‘);
18             //导入图片
19             var img = new Image();
20             img.src="../images/002.png";
21             //图片加载完之后,再开始绘制图片
22             img.onload = function(){
23                 //绘制图片ctx.drawImage(imgobj,left,top,width,height)
24                 ctx.drawImage(img,100,50,300,200)
25             }
26
27         })
28     </script>
29 </head>
30 <body>
31     <canvas id="canvas" width="500" height="300">您的浏览器不支持canvas</canvas>
32 </body>
33 </html>

使用图片

时间: 2024-12-24 05:34:55

HTML5使用Canvas来绘制图形的相关文章

HTML5在canvas中绘制复杂形状附效果截图

HTML5在canvas中绘制复杂形状附效果截图 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径. beginPath() : 开始绘制一个新路径. closePath() : 通过绘制一条当前点到路径起点的线段来闭合形状. fill() , stroke() : 填充形状或绘制空心形状. moveTo() : 将当前点移动到点(x,y). lineTo() : 从当前点绘制一条直线到点(x,y). arc(x,y,r,sAngle,eAn

HTML5 在canvas中绘制矩形

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/32930501 一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统,x坐标向右递增,y坐标向下递增. 使用绘图环境的矩形绘制函数来绘制矩形. fillRect(x,y,width,height) : 绘制一个实心的矩形. strokeRect(x,y,width,height) : 绘制一个空心的矩形. clearRect(x,y,width,height) : 清

HTML5 在canvas中绘制复杂形状

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/32942667 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径. beginPath()  : 开始绘制一个新路径. closePath()  : 通过绘制一条当前点到路径起点的线段来闭合形状. fill() , stroke()  : 填充形状或绘制空心形状. moveTo()  : 将当前点移动到点(x,y). lin

HTML5 在canvas中绘制文本

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/33333519 一.绘制文本 在绘图环境中提供了两种方法在canvas中绘制文本. strokeText(text,x,y) : 在(x,y)处绘制空心的文本. fillText(text,x,y) : (x,y)处绘制实心的文本. 二.在canvas中绘制文本 <!DOCTYPE html> <html> <head> <meta http-e

使用canvas来绘制图形

一个简单例子 一开始,让我们来看个简单的例子,我们绘制了两个有趣的长方形,其中的一个有着alpha透明度. 我们将在接下来的例子里深入探索一下这是如何工作的. <html> <head> <script type="application/javascript"> function draw() { var canvas = document.getElementById("canvas"); if (canvas.getCont

[Canvas学习]绘制图形

学习目的:在Canvas上绘制矩形,三角形,直线,圆弧,曲线 栅格 栅格canvas grid,canvas元素默认被网格覆盖,栅格的起点是左上角坐标(0,0),元素的位置都是相对于栅格起点来定位的. 绘制矩形 API提供了三种方法绘制矩形 fillRect(x, y, width, height) 绘制填充的矩形 strokeRect(x, y, width, height) 绘制矩形边框 clearRect(x, y, width, height) 清除指定矩形区域变的完全透明 rect(x

HTML5之canvas 6 绘制渐变图形

线性渐变 Var grd=context.createLinearGradient(xStart,yStart,xEnd,yEnd) (xStart,yStart)起点,(xEnd,yEnd)终点 grd.addColorStop(offset,color); offset范围是0~1之间的浮点数,color是关键颜色 二. 径向渐变 Var grd=context.createRadialGradient(xStart,yStart,radiusStart,xEnd,yEnd,radiusEn

canvas基本绘制图形

canvas H5新增的元素,提供了强大的图形的绘制,变换,图片,视频的处理等等.需要使用JavaScript脚本操作 浏览器支持 大多数的现代浏览器都可以支持:IE8以下的浏览器不支持 画布 可支持设置宽高,默认宽高300 150 获取canvas元素 var mycanvas = document.getElementById("myCanvas"); 获取绘制环境(相当于画笔) var context = mycanvas.getContext("2d");

详述canvas(三)—绘制图形/填充和渐变

未闭合的图形也会被填充 <body> <canvas id = "palette" width="500px" height="500px"> 您的浏览器不支持canvas标签,请升级浏览器或更换其它浏览器 </canvas> </body> </html> <script> var palette = document.querySelector("#palett