【HTML5】Canvas

  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>