1
1
draw ( ) ;
2
+ draw1 ( ) ;
3
+ draw2 ( ) ;
4
+ draw3 ( ) ;
5
+ draw4 ( ) ;
6
+ draw5 ( ) ;
7
+
2
8
3
9
//矩形
4
10
function draw ( ) {
5
11
var canvas = document . getElementById ( 'canvas' ) ;
6
12
if ( canvas . getContext ) {
7
13
var ctx = canvas . getContext ( '2d' ) ;
8
14
15
+ //fillRect(x, y, width, height)
16
+ //绘制一个填充的矩形
9
17
ctx . fillRect ( 25 , 25 , 100 , 100 ) ;
18
+ //清除指定矩形区域,让清除部分完全透明
10
19
ctx . clearRect ( 45 , 45 , 60 , 60 ) ;
20
+ //绘制一个矩形的边框
11
21
ctx . strokeRect ( 50 , 50 , 50 , 50 ) ;
12
22
}
13
23
}
14
24
15
25
//三角形
16
- function draw ( ) {
26
+ function draw1 ( ) {
17
27
var canvas = document . getElementById ( 'canvas' ) ;
18
28
if ( canvas . getContext ) {
19
29
var ctx = canvas . getContext ( '2d' ) ;
20
30
31
+ //新建一条路径,生成之后,图形绘制命令被指向到路径上生成路径
21
32
ctx . beginPath ( ) ;
22
- ctx . moveTo ( 75 , 50 ) ;
23
- ctx . lineTo ( 100 , 75 ) ;
24
- ctx . lineTo ( 100 , 25 ) ;
33
+ //将笔触移动到指定的坐标x以及y上
34
+ ctx . moveTo ( 175 , 75 ) ;
35
+ //绘制一条从当前位置到指定x以及y位置的直线
36
+ ctx . lineTo ( 225 , 25 ) ;
37
+ ctx . lineTo ( 225 , 125 ) ;
38
+ //通过填充路径的内容区域生成实心的图形
25
39
ctx . fill ( ) ;
26
40
}
27
41
}
28
42
29
43
30
44
//笑脸
31
- function draw ( ) {
45
+ function draw2 ( ) {
32
46
var canvas = document . getElementById ( 'canvas' ) ;
33
47
if ( canvas . getContext ) {
34
48
var ctx = canvas . getContext ( '2d' ) ;
35
49
36
50
ctx . beginPath ( ) ;
37
- ctx . arc ( 75 , 75 , 50 , 0 , Math . PI * 2 , true ) ; // 绘制
38
- ctx . moveTo ( 110 , 75 ) ;
39
- ctx . arc ( 75 , 75 , 35 , 0 , Math . PI , false ) ; // 口(顺时针)
40
- ctx . moveTo ( 65 , 65 ) ;
41
- ctx . arc ( 60 , 65 , 5 , 0 , Math . PI * 2 , true ) ; // 左眼
42
- ctx . moveTo ( 95 , 65 ) ;
43
- ctx . arc ( 90 , 65 , 5 , 0 , Math . PI * 2 , true ) ; // 右眼
51
+ //画一个以(x,y)为圆心的以radius为半径的圆弧(圆),
52
+ //从startAngle开始到endAngle结束,按照anticlockwise给定的方向(默认为顺时针)来生成
53
+ ctx . arc ( 325 , 75 , 50 , 0 , Math . PI * 2 , true ) ; // 绘制
54
+ ctx . moveTo ( 290 , 75 ) ;
55
+ ctx . arc ( 325 , 75 , 35 , 0 , Math . PI , false ) ; // 口(顺时针)
56
+ ctx . moveTo ( 300 , 65 ) ;
57
+ ctx . arc ( 295 , 65 , 5 , 0 , Math . PI * 2 , true ) ; // 左眼
58
+ ctx . moveTo ( 360 , 65 ) ;
59
+ ctx . arc ( 355 , 65 , 5 , 0 , Math . PI * 2 , true ) ; // 右眼
60
+ //通过线条来绘制图形轮廓
44
61
ctx . stroke ( ) ;
45
62
}
46
63
}
47
64
48
65
//三角形
49
66
50
- function draw ( ) {
67
+ function draw3 ( ) {
51
68
var canvas = document . getElementById ( 'canvas' ) ;
52
69
if ( canvas . getContext ) {
53
70
var ctx = canvas . getContext ( '2d' ) ;
54
71
55
72
// 填充三角形
56
73
ctx . beginPath ( ) ;
57
- ctx . moveTo ( 25 , 25 ) ;
58
- ctx . lineTo ( 105 , 25 ) ;
59
- ctx . lineTo ( 25 , 105 ) ;
74
+ ctx . moveTo ( 425 , 25 ) ;
75
+ ctx . lineTo ( 505 , 25 ) ;
76
+ ctx . lineTo ( 425 , 105 ) ;
60
77
ctx . fill ( ) ;
61
78
62
79
// 描边三角形
63
80
ctx . beginPath ( ) ;
64
- ctx . moveTo ( 125 , 125 ) ;
65
- ctx . lineTo ( 125 , 45 ) ;
66
- ctx . lineTo ( 45 , 125 ) ;
81
+ ctx . moveTo ( 525 , 125 ) ;
82
+ ctx . lineTo ( 525 , 45 ) ;
83
+ ctx . lineTo ( 445 , 125 ) ;
84
+ //闭合路径之后图形绘制命令又重新指向到上下文中
67
85
ctx . closePath ( ) ;
68
86
ctx . stroke ( ) ;
69
87
}
70
88
}
71
89
72
90
73
91
//二次贝塞尔曲线
74
- function draw ( ) {
92
+ function draw4 ( ) {
75
93
var canvas = document . getElementById ( 'canvas' ) ;
76
94
if ( canvas . getContext ) {
77
95
var ctx = canvas . getContext ( '2d' ) ;
78
96
79
97
// 二次贝塞尔曲线
80
98
ctx . beginPath ( ) ;
81
- ctx . moveTo ( 75 , 25 ) ;
82
- ctx . quadraticCurveTo ( 25 , 25 , 25 , 62.5 ) ;
83
- ctx . quadraticCurveTo ( 25 , 100 , 50 , 100 ) ;
84
- ctx . quadraticCurveTo ( 50 , 120 , 30 , 125 ) ;
85
- ctx . quadraticCurveTo ( 60 , 120 , 65 , 100 ) ;
86
- ctx . quadraticCurveTo ( 125 , 100 , 125 , 62.5 ) ;
87
- ctx . quadraticCurveTo ( 125 , 25 , 75 , 25 ) ;
99
+ ctx . moveTo ( 675 , 25 ) ;
100
+ //绘制二次贝塞尔曲线,cp1x,cp1y为一个控制点,x,y为结束点。
101
+ ctx . quadraticCurveTo ( 625 , 25 , 625 , 62.5 ) ;
102
+ ctx . quadraticCurveTo ( 625 , 100 , 650 , 100 ) ;
103
+ ctx . quadraticCurveTo ( 650 , 120 , 630 , 125 ) ;
104
+ ctx . quadraticCurveTo ( 660 , 120 , 665 , 100 ) ;
105
+ ctx . quadraticCurveTo ( 725 , 100 , 725 , 62.5 ) ;
106
+ ctx . quadraticCurveTo ( 725 , 25 , 675 , 25 ) ;
88
107
ctx . stroke ( ) ;
89
108
}
90
109
}
91
110
92
111
93
112
//三次贝塞尔曲线
94
- function draw ( ) {
113
+ function draw5 ( ) {
95
114
var canvas = document . getElementById ( 'canvas' ) ;
96
115
if ( canvas . getContext ) {
97
116
var ctx = canvas . getContext ( '2d' ) ;
98
117
99
- //三次贝塞尔曲线
100
- ctx . beginPath ( ) ;
101
- ctx . moveTo ( 75 , 40 ) ;
102
- ctx . bezierCurveTo ( 75 , 37 , 70 , 25 , 50 , 25 ) ;
103
- ctx . bezierCurveTo ( 20 , 25 , 20 , 62.5 , 20 , 62.5 ) ;
104
- ctx . bezierCurveTo ( 20 , 80 , 40 , 102 , 75 , 120 ) ;
105
- ctx . bezierCurveTo ( 110 , 102 , 130 , 80 , 130 , 62.5 ) ;
106
- ctx . bezierCurveTo ( 130 , 62.5 , 130 , 25 , 100 , 25 ) ;
107
- ctx . bezierCurveTo ( 85 , 25 , 75 , 37 , 75 , 40 ) ;
108
- ctx . fill ( ) ;
109
- }
110
- }
111
-
112
-
113
- //组合
114
- function draw ( ) {
115
- var canvas = document . getElementById ( 'canvas' ) ;
116
- if ( canvas . getContext ) {
117
- var ctx = canvas . getContext ( '2d' ) ;
118
-
119
- roundedRect ( ctx , 12 , 12 , 150 , 150 , 15 ) ;
120
- roundedRect ( ctx , 19 , 19 , 150 , 150 , 9 ) ;
121
- roundedRect ( ctx , 53 , 53 , 49 , 33 , 10 ) ;
122
- roundedRect ( ctx , 53 , 119 , 49 , 16 , 6 ) ;
123
- roundedRect ( ctx , 135 , 53 , 49 , 33 , 10 ) ;
124
- roundedRect ( ctx , 135 , 119 , 25 , 49 , 10 ) ;
125
-
126
- ctx . beginPath ( ) ;
127
- ctx . arc ( 37 , 37 , 13 , Math . PI / 7 , - Math . PI / 7 , false ) ;
128
- ctx . lineTo ( 31 , 37 ) ;
129
- ctx . fill ( ) ;
130
-
131
- for ( var i = 0 ; i < 8 ; i ++ ) {
132
- ctx . fillRect ( 51 + i * 16 , 35 , 4 , 4 ) ;
133
- }
134
-
135
- for ( i = 0 ; i < 6 ; i ++ ) {
136
- ctx . fillRect ( 115 , 51 + i * 16 , 4 , 4 ) ;
137
- }
138
-
139
- for ( i = 0 ; i < 8 ; i ++ ) {
140
- ctx . fillRect ( 51 + i * 16 , 99 , 4 , 4 ) ;
141
- }
142
-
143
- ctx . beginPath ( ) ;
144
- ctx . moveTo ( 83 , 116 ) ;
145
- ctx . lineTo ( 83 , 102 ) ;
146
- ctx . bezierCurveTo ( 83 , 94 , 89 , 88 , 97 , 88 ) ;
147
- ctx . bezierCurveTo ( 105 , 88 , 111 , 94 , 111 , 102 ) ;
148
- ctx . lineTo ( 111 , 116 ) ;
149
- ctx . lineTo ( 106.333 , 111.333 ) ;
150
- ctx . lineTo ( 101.666 , 116 ) ;
151
- ctx . lineTo ( 97 , 111.333 ) ;
152
- ctx . lineTo ( 92.333 , 116 ) ;
153
- ctx . lineTo ( 87.666 , 111.333 ) ;
154
- ctx . lineTo ( 83 , 116 ) ;
155
- ctx . fill ( ) ;
156
-
157
- ctx . fillStyle = "white" ;
158
- ctx . beginPath ( ) ;
159
- ctx . moveTo ( 91 , 96 ) ;
160
- ctx . bezierCurveTo ( 88 , 96 , 87 , 99 , 87 , 101 ) ;
161
- ctx . bezierCurveTo ( 87 , 103 , 88 , 106 , 91 , 106 ) ;
162
- ctx . bezierCurveTo ( 94 , 106 , 95 , 103 , 95 , 101 ) ;
163
- ctx . bezierCurveTo ( 95 , 99 , 94 , 96 , 91 , 96 ) ;
164
- ctx . moveTo ( 103 , 96 ) ;
165
- ctx . bezierCurveTo ( 100 , 96 , 99 , 99 , 99 , 101 ) ;
166
- ctx . bezierCurveTo ( 99 , 103 , 100 , 106 , 103 , 106 ) ;
167
- ctx . bezierCurveTo ( 106 , 106 , 107 , 103 , 107 , 101 ) ;
168
- ctx . bezierCurveTo ( 107 , 99 , 106 , 96 , 103 , 96 ) ;
169
- ctx . fill ( ) ;
170
-
171
- ctx . fillStyle = "black" ;
172
- ctx . beginPath ( ) ;
173
- ctx . arc ( 101 , 102 , 2 , 0 , Math . PI * 2 , true ) ;
174
- ctx . fill ( ) ;
118
+ //三次贝塞尔曲线
119
+ // ctx.beginPath();
120
+ // ctx.moveTo(75, 40);
121
+ // ctx.bezierCurveTo(75, 37, 70, 25, 50, 25);
122
+ // ctx.bezierCurveTo(20, 25, 20, 62.5, 20, 62.5);
123
+ // ctx.bezierCurveTo(20, 80, 40, 102, 75, 120);
124
+ // ctx.bezierCurveTo(110, 102, 130, 80, 130, 62.5);
125
+ // ctx.bezierCurveTo(130, 62.5, 130, 25, 100, 25);
126
+ // ctx.bezierCurveTo(85, 25, 75, 37, 75, 40);
175
127
128
+ //三次贝塞尔曲线
176
129
ctx . beginPath ( ) ;
177
- ctx . arc ( 89 , 102 , 2 , 0 , Math . PI * 2 , true ) ;
130
+ ctx . moveTo ( 800 , 40 ) ;
131
+ //绘制三次贝塞尔曲线,cp1x,cp1y为控制点一,cp2x,cp2y为控制点二,x,y为结束点
132
+ ctx . bezierCurveTo ( 800 , 37 , 795 , 25 , 775 , 25 ) ;
133
+ ctx . bezierCurveTo ( 755 , 25 , 745 , 62.5 , 725 , 62.5 ) ;
134
+ // ctx.bezierCurveTo(745, 80, 765, 102, 800, 120);
135
+ // ctx.bezierCurveTo(835, 102, 855, 80, 855, 62.5);
136
+ // ctx.bezierCurveTo(855, 62.5, 855, 25, 825, 25);
137
+ // ctx.bezierCurveTo(810, 25, 800, 37, 800, 40);
178
138
ctx . fill ( ) ;
179
139
}
180
- }
181
-
182
- // 封装的一个用于绘制圆角矩形的函数.
183
-
184
- function roundedRect ( ctx , x , y , width , height , radius ) {
185
- ctx . beginPath ( ) ;
186
- ctx . moveTo ( x , y + radius ) ;
187
- ctx . lineTo ( x , y + height - radius ) ;
188
- ctx . quadraticCurveTo ( x , y + height , x + radius , y + height ) ;
189
- ctx . lineTo ( x + width - radius , y + height ) ;
190
- ctx . quadraticCurveTo ( x + width , y + height , x + width , y + height - radius ) ;
191
- ctx . lineTo ( x + width , y + radius ) ;
192
- ctx . quadraticCurveTo ( x + width , y , x + width - radius , y ) ;
193
- ctx . lineTo ( x + radius , y ) ;
194
- ctx . quadraticCurveTo ( x , y , x , y + radius ) ;
195
- ctx . stroke ( ) ;
196
- }
140
+ }
0 commit comments