1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title></title>
6 <style type="text/css">
7 canvas{background: #F5F5F5}
8 </style>
9 </head>
10 <body>
11 <canvas id="canvas1" width="900" height="1200">
12 当前浏览器不支持canvas
13 </canvas>
14 <script type="text/javascript">
15 var canvas=document.getElementById('canvas1');//定义变量获取画布DOM
16 var context=canvas.getContext('2d');//设置绘图环境为2d
17 context.lineWidth=4;
18 context.strokeStyle="#FF00FF";
19 context.moveTo(200,100);
20 context.lineTo(200,200);
21 context.lineTo(250,200);
22 context.lineTo(250,150);
23 context.lineTo(150,150);
24 context.lineTo(150,200);
25 context.lineTo(200,200);
26 context.lineTo(200,250);
27 //context.closePath();//从当前点回到起始点来封闭路径
28 context.stroke();
29 //绘制矩形
30 context.beginPath();//此句不能省,否则上面的图样式会受下面的设置影响
31 context.lineWidth=2;
32 context.strokeStyle="#0000FF";
33 context.rect(260,100,50,20) //语句结尾分号;可省
34 context.stroke();
35
36 context.beginPath();
37 context.strokeRect(320,100,50,30);
38
39 context.beginPath();
40 context.lineWidth=2;
41 context.fillStyle="#FF0000";
42 context.rect(380,100,40,20);
43 context.fill();
44
45 context.beginPath();
46 context.lineWidth=2;
47 context.fillStyle="#00FF00";
48 context.fillRect(430,100,50,50);
49
50 context.beginPath();
51 context.lineWidth=3;
52 context.arc(500,200,50,0,(Math.PI)/2);//默认false顺时针,可设置true逆时针
53 context.stroke();
54
55 context.beginPath();
56 context.lineWidth=3;
57 context.arc(600,200,50,0,(Math.PI)/2);//默认false顺时针,可设置true逆时针
58 context.fill();
59 context.stroke();
60
61 context.beginPath();
62 context.arc(600,100,50,0,(Math.PI)/2);
63 context.stroke();
64
65 context.beginPath();
66 context.arc(700,100,50,0,(Math.PI)/2);
67 context.closePath();
68 context.fill();
69 context.stroke();
70
71 //绘制扇形,思路很好!
72 context.beginPath();
73 context.strokeStyle="#F5F5F5";
74 context.moveTo(200,400);
75 context.arc(200,400,150,Math.PI*7/6,Math.PI*11/6);
76 context.fill();
77 context.stroke();
78 context.beginPath();
79 context.fillStyle="#F5F5F5";
80 context.strokeStyle="#F5F5F5";
81 context.moveTo(200,400);
82 context.arc(200,400,50,Math.PI*7/6,Math.PI*11/6);
83 context.fill();
84 context.stroke();
85 context.beginPath();
86 context.moveTo(200,400);
87 context.lineWidth=5;
88 context.arc(200,400,50,Math.PI*11/6,Math.PI*11/6);
89 context.stroke();
90
91 context.beginPath();
92 context.lineWidth=1;
93 context.strokeStyle="#000000";
94 context.fillStyle="#000000";
95 context.font="40px 隶书";
96 context.strokeText("黄山",280,400);
97 context.fillText("天柱山",380,400);
98 context.strokeStyle="#FFFF00";
99 context.fillStyle="#00FFFF";
100 context.fillText("方特欢乐世界",500,400);
101 context.strokeText("方特欢乐世界",500,400);
102
103 //线性渐变
104 g=context.createLinearGradient(100,450,300,300);
105 g.addColorStop(0,"#000000");
106 g.addColorStop(0.2,"#ffffff");
107 g.addColorStop(0.4,"#FF0000");
108 g.addColorStop(0.6,"#00ff00");
109 g.addColorStop(1,"#0000ff");
110 context.fillStyle=g;
111 context.fillRect(100,450,300,300)
112
113 //放射性渐变
114 r=context.createRadialGradient(650,550,0,650,550,100);
115 r.addColorStop(0,"#000000");
116 r.addColorStop(0.2,"#ffffff");
117 r.addColorStop(0.4,"#FF0000");
118 r.addColorStop(0.6,"#00ff00");
119 r.addColorStop(1,"#0000ff");
120 context.fillStyle=r;
121 context.arc(650,550,100,0,Math.PI*2);
122 context.fill();
123
124 //太极图
125 g1=context.createLinearGradient(40,920,320,920);
126 g1.addColorStop(0,"#000000");
127 g1.addColorStop(1,"#ffffff");
128
129 g2=context.createLinearGradient(40,920,320,920);
130 g2.addColorStop(0,"#ffffff");
131 g2.addColorStop(1,"#000000");
132
133 g3=context.createRadialGradient(120,1000,0,120,1000,10);
134 g3.addColorStop(0,"#ffffff");
135 g3.addColorStop(1,"#000000");
136
137 g4=context.createRadialGradient(280,1000,0,280,1000,10);
138 g4.addColorStop(0,"#000000");
139 g4.addColorStop(1,"#ffffff");
140
141 context.beginPath();
142 context.arc(200,1000,160,0,Math.PI);
143 context.arc(120,1000,80,0,Math.PI,true);
144 context.arc(280,1000,80,Math.PI,0,true);//没看懂为什么会反着颜色?
145 context.fillStyle=g1;
146 context.fill();//上面的疑问懂了:fill功能是把上面3个弧围成的区域填充!
147
148 context.beginPath();
149 context.arc(200,1000,160,0,Math.PI,true);
150 context.arc(280,1000,80,0,Math.PI);
151 context.arc(120,1000,80,Math.PI,0);
152 context.fillStyle=g2;
153 context.fill();
154
155 context.beginPath();
156 context.fillStyle=g3;
157 context.arc(120,1000,10,0,Math.PI*2);
158 context.fill();
159
160 context.beginPath();
161 context.fillStyle=g4;
162 context.arc(280,1000,10,0,Math.PI*2);
163 context.fill();
164
165 //设置文字阴影
166 context.shadowOffsetX=10;
167 context.shadowOffsetY=10;
168 context.shadowBlur=5;
169 context.shadowColor="red";
170 context.fillStyle="blue";
171 context.font="70px 隶书";
172 context.fillText("舌尖上的中国",400,700);
173
174 //绘制饼图
175 context.beginPath();
176 context.shadowOffsetX=0;
177 context.fillStyle="black";
178 context.shadowColor="gray";
179 context.fillText("绘制饼图",400,800);
180 context.fillStyle="red";
181 context.moveTo(700,1000);
182 context.arc(700,1000,150,0,Math.PI/3);
183 context.fill();
184 context.closePath();//还可设closePath();
185 context.beginPath();
186 context.fillStyle="blue";
187 context.moveTo(700,1000);
188 context.arc(700,1000,150,Math.PI/3,Math.PI);
189 context.fill();
190 context.closePath();
191 context.beginPath();
192 context.fillStyle="green";
193 context.moveTo(700,1000);
194 context.arc(700,1000,150,Math.PI,Math.PI*5/3);
195 context.fill();
196 context.closePath();
197 context.beginPath();
198 context.fillStyle="yellow";
199 context.moveTo(700,1000);
200 context.arc(700,1000,150,Math.PI*5/3,Math.PI*2);
201 context.fill();
202 context.closePath();
203 context.fillStyle="black";
204 context.font="20px 隶书";
205 context.fillText("15%",750,1050);
206 context.fillText("35%",650,1050);
207 context.fillText("35%",650,950);
208 context.fillText("15%",750,950);
209 </script>
210 </body>
211 </html>