paint method
Called whenever the object needs to paint. The given Canvas has its
coordinate space configured such that the origin is at the top left of the
box. The area of the box is the size of the size argument.
Paint operations should remain inside the given area. Graphical operations outside the bounds may be silently ignored, clipped, or not clipped. It may sometimes be difficult to guarantee that a certain operation is inside the bounds (e.g., drawing a rectangle whose size is determined by user inputs). In that case, consider calling Canvas.clipRect at the beginning of paint so everything that follows will be guaranteed to only draw within the clipped area.
Implementations should be wary of correctly pairing any calls to Canvas.save/Canvas.saveLayer and Canvas.restore, otherwise all subsequent painting on this canvas may be affected, with potentially hilarious but confusing results.
To paint text on a Canvas, use a TextPainter.
To paint an image on a Canvas:
-
Obtain an ImageStream, for example by calling ImageProvider.resolve on an AssetImage or NetworkImage object.
-
Whenever the ImageStream's underlying ImageInfo object changes (see ImageStream.addListener), create a new instance of your custom paint delegate, giving it the new ImageInfo object.
-
In your delegate's paint method, call the Canvas.drawImage, Canvas.drawImageRect, or Canvas.drawImageNine methods to paint the ImageInfo.image object, applying the ImageInfo.scale value to obtain the correct rendering size.
Implementation
@override
void paint(Canvas canvas, Size size) {
final scaleX = size.width / 22.000000051197276;
final scaleY = size.height / 22.000000051674014;
final scale = math.min(scaleX, scaleY);
final translationX = (size.width - 22.000000051197276 * scale) / 2 - 0.991209948802726 * scale;
final translationY = (size.height - 22.000000051674014 * scale) / 2 - 1.0004399483259823 * scale;
final path = Path();
final paint = Paint()..color = color;
path.moveTo(
9.99121 * scale + translationX,
15.00044 * scale + translationY,
);
path.cubicTo(
10.256473268904148 * scale + translationX,
15.000593401601998 * scale + translationY,
10.510916647216517 * scale + translationX,
14.895286013193827 * scale + translationY,
10.698486407512107 * scale + translationX,
14.707716252898237 * scale + translationY,
);
path.cubicTo(
10.886056167807697 * scale + translationX,
14.520146492602647 * scale + translationY,
10.991363556215868 * scale + translationX,
14.265703114290279 * scale + translationY,
10.991209576129707 * scale + translationX,
14.000439460080317 * scale + translationY,
);
path.lineTo(
10.99121 * scale + translationX,
6.000439999999999 * scale + translationY,
);
path.cubicTo(
10.99121 * scale + translationX,
5.448155250169206 * scale + translationY,
10.543494749830794 * scale + translationX,
5.000439999999999 * scale + translationY,
9.99121 * scale + translationX,
5.000439999999999 * scale + translationY,
);
path.cubicTo(
9.438925250169207 * scale + translationX,
5.000439999999999 * scale + translationY,
8.99121 * scale + translationX,
5.448155250169206 * scale + translationY,
8.99121 * scale + translationX,
6.000439999999999 * scale + translationY,
);
path.lineTo(
8.99121 * scale + translationX,
14.00044 * scale + translationY,
);
path.cubicTo(
8.991058434971993 * scale + translationX,
14.265702464723395 * scale + translationY,
9.096366678246405 * scale + translationX,
14.520144301145766 * scale + translationY,
9.283935864114143 * scale + translationX,
14.707713487013505 * scale + translationY,
);
path.cubicTo(
9.471505049981882 * scale + translationX,
14.895282672881244 * scale + translationY,
9.725946886404254 * scale + translationX,
15.000590916155653 * scale + translationY,
9.991209729780158 * scale + translationX,
15.000439594301731 * scale + translationY,
);
path.close();
path.moveTo(
13.99121 * scale + translationX,
15.00044 * scale + translationY,
);
path.cubicTo(
14.25647311464623 * scale + translationX,
15.000593401601998 * scale + translationY,
14.510916492958598 * scale + translationX,
14.895286013193827 * scale + translationY,
14.698486253254188 * scale + translationX,
14.707716252898237 * scale + translationY,
);
path.cubicTo(
14.886056013549778 * scale + translationX,
14.520146492602647 * scale + translationY,
14.99136340195795 * scale + translationX,
14.265703114290279 * scale + translationY,
14.991209421871789 * scale + translationX,
14.000439460080317 * scale + translationY,
);
path.lineTo(
14.99121 * scale + translationX,
6.000439999999999 * scale + translationY,
);
path.cubicTo(
14.99121 * scale + translationX,
5.448155250169206 * scale + translationY,
14.543494749830794 * scale + translationX,
5.000439999999999 * scale + translationY,
13.99121 * scale + translationX,
5.000439999999999 * scale + translationY,
);
path.cubicTo(
13.438925250169207 * scale + translationX,
5.000439999999999 * scale + translationY,
12.99121 * scale + translationX,
5.448155250169206 * scale + translationY,
12.99121 * scale + translationX,
6.000439999999999 * scale + translationY,
);
path.lineTo(
12.99121 * scale + translationX,
14.00044 * scale + translationY,
);
path.cubicTo(
12.991058326788963 * scale + translationX,
14.265702464723395 * scale + translationY,
13.096366570063374 * scale + translationX,
14.520144301145766 * scale + translationY,
13.283935755931113 * scale + translationX,
14.707713487013505 * scale + translationY,
);
path.cubicTo(
13.471504941798852 * scale + translationX,
14.895282672881244 * scale + translationY,
13.725946778221223 * scale + translationX,
15.000590916155653 * scale + translationY,
13.991209621597127 * scale + translationX,
15.000439594301731 * scale + translationY,
);
path.close();
path.moveTo(
5.991210000000001 * scale + translationX,
13.00044 * scale + translationY,
);
path.cubicTo(
6.256473423162069 * scale + translationX,
13.000593478730957 * scale + translationY,
6.510916801474436 * scale + translationX,
12.895286090322786 * scale + translationY,
6.698486561770026 * scale + translationX,
12.707716330027196 * scale + translationY,
);
path.cubicTo(
6.886056322065615 * scale + translationX,
12.520146569731606 * scale + translationY,
6.991363710473788 * scale + translationX,
12.265703191419238 * scale + translationY,
6.9912097303876255 * scale + translationX,
12.000439537209276 * scale + translationY,
);
path.lineTo(
6.991210000000001 * scale + translationX,
8.00044 * scale + translationY,
);
path.cubicTo(
6.991210000000001 * scale + translationX,
7.448155250169206 * scale + translationY,
6.543494749830794 * scale + translationX,
7.000439999999999 * scale + translationY,
5.991210000000001 * scale + translationX,
7.000439999999999 * scale + translationY,
);
path.cubicTo(
5.438925250169207 * scale + translationX,
7.000439999999999 * scale + translationY,
4.991210000000001 * scale + translationX,
7.448155250169206 * scale + translationY,
4.991210000000001 * scale + translationX,
8.00044 * scale + translationY,
);
path.lineTo(
4.991210000000001 * scale + translationX,
12.00044 * scale + translationY,
);
path.cubicTo(
4.991058543155025 * scale + translationX,
12.26570251881491 * scale + translationY,
5.096366786429434 * scale + translationX,
12.520144355237282 * scale + translationY,
5.283935972297172 * scale + translationX,
12.70771354110502 * scale + translationY,
);
path.cubicTo(
5.47150515816491 * scale + translationX,
12.89528272697276 * scale + translationY,
5.725946994587283 * scale + translationX,
13.000590970247169 * scale + translationY,
5.9912098379631855 * scale + translationX,
13.000439648393247 * scale + translationY,
);
path.close();
path.moveTo(
19.991210000000002 * scale + translationX,
1.0004399999999993 * scale + translationY,
);
path.lineTo(
3.9912100000000024 * scale + translationX,
1.0004399999999993 * scale + translationY,
);
path.cubicTo(
2.335105004658407 * scale + translationX,
1.0022477036181006 * scale + translationY,
0.9930177040948454 * scale + translationX,
2.3443350041816626 * scale + translationY,
0.991209948802726 * scale + translationX,
4.000439793372108 * scale + translationY,
);
path.lineTo(
0.9912100000000024 * scale + translationX,
20.000439999999998 * scale + translationY,
);
path.cubicTo(
0.9930177040948454 * scale + translationX,
21.65654375614189 * scale + translationY,
2.3351050046584074 * scale + translationX,
22.998631056705452 * scale + translationY,
3.9912097938488524 * scale + translationX,
23.000438811997572 * scale + translationY,
);
path.lineTo(
19.991210000000002 * scale + translationX,
23.000439999999998 * scale + translationY,
);
path.cubicTo(
21.647313756618637 * scale + translationX,
22.998631056705452 * scale + translationY,
22.9894010571822 * scale + translationX,
21.65654375614189 * scale + translationY,
22.99120881247432 * scale + translationX,
20.000438966951446 * scale + translationY,
);
path.lineTo(
22.991210000000002 * scale + translationX,
4.0004399999999976 * scale + translationY,
);
path.cubicTo(
22.9894010571822 * scale + translationX,
2.3443350041816604 * scale + translationY,
21.647313756618637 * scale + translationX,
1.0022477036180992 * scale + translationY,
19.99120896742819 * scale + translationX,
1.0004399483259823 * scale + translationY,
);
path.close();
path.moveTo(
20.991210000000002 * scale + translationX,
20.000439999999998 * scale + translationY,
);
path.cubicTo(
20.99083979233344 * scale + translationX,
20.55257096084976 * scale + translationY,
20.543340961138934 * scale + translationX,
21.000069792044258 * scale + translationY,
19.991209373689813 * scale + translationX,
21.00043934207136 * scale + translationY,
);
path.lineTo(
3.9912100000000024 * scale + translationX,
21.000439999999998 * scale + translationY,
);
path.cubicTo(
3.4390782875091506 * scale + translationX,
21.000069792044258 * scale + translationY,
2.9915794563146494 * scale + translationX,
20.55257096084976 * scale + translationY,
2.9912099062875512 * scale + translationX,
20.00043937340064 * scale + translationY,
);
path.lineTo(
2.9912100000000024 * scale + translationX,
4.0004399999999976 * scale + translationY,
);
path.cubicTo(
2.99157945631465 * scale + translationX,
3.448308287219977 * scale + translationY,
3.439078287509151 * scale + translationX,
3.0008094560254763 * scale + translationY,
3.991209874958272 * scale + translationX,
3.000439905998377 * scale + translationY,
);
path.lineTo(
19.991210000000002 * scale + translationX,
3.0004399999999976 * scale + translationY,
);
path.cubicTo(
20.543340961138934 * scale + translationX,
3.000809456025475 * scale + translationY,
20.990839792333436 * scale + translationX,
3.4483082872199766 * scale + translationY,
20.991209342360534 * scale + translationX,
4.000439874669098 * scale + translationY,
);
path.close();
path.moveTo(
17.34766 * scale + translationX,
15.408639999999998 * scale + translationY,
);
path.cubicTo(
15.781865736061258 * scale + translationX,
16.505709293076933 * scale + translationY,
13.90201897134011 * scale + translationX,
17.064351692442767 * scale + translationY,
11.991210510792405 * scale + translationX,
17.00044072417175 * scale + translationY,
);
path.cubicTo(
10.081942908835412 * scale + translationX,
17.052519982801858 * scale + translationY,
8.205734649241464 * scale + translationX,
16.494957813222502 * scale + translationY,
6.634770213901656 * scale + translationX,
15.40864049676682 * scale + translationY,
);
path.cubicTo(
6.21193908673343 * scale + translationX,
15.053072622669708 * scale + translationY,
5.580907290478133 * scale + translationX,
15.10766860464853 * scale + translationY,
5.225428647319587 * scale + translationX,
15.530574706175614 * scale + translationY,
);
path.cubicTo(
4.8699500041610415 * scale + translationX,
15.953480807702695 * scale + translationY,
4.924679087317027 * scale + translationX,
16.584501074089065 * scale + translationY,
5.3476601599015385 * scale + translationX,
16.939890506523305 * scale + translationY,
);
path.cubicTo(
7.274337831498222 * scale + translationX,
18.34060467726302 * scale + translationY,
9.610052502944734 * scale + translationX,
19.065045204729376 * scale + translationY,
11.991210411900731 * scale + translationX,
19.000440652669333 * scale + translationY,
);
path.cubicTo(
14.372369830819796 * scale + translationX,
19.0650400000473 * scale + translationY,
16.708086302488695 * scale + translationX,
18.340600004668715 * scale + translationY,
18.63476926992107 * scale + translationX,
16.93988933632361 * scale + translationY,
);
path.cubicTo(
19.05747555820037 * scale + translationX,
16.584428717636477 * scale + translationY,
19.1120517065624 * scale + translationX,
15.953626162472919 * scale + translationY,
18.756679085982398 * scale + translationX,
15.530846193967406 * scale + translationY,
);
path.cubicTo(
18.4013064654024 * scale + translationX,
15.108066225461895 * scale + translationY,
17.770515435919286 * scale + translationX,
15.053357024274675 * scale + translationY,
17.34766051871613 * scale + translationX,
15.40864046073707 * scale + translationY,
);
path.close();
path.moveTo(
17.991210000000002 * scale + translationX,
7.0004399999999976 * scale + translationY,
);
path.cubicTo(
17.725945651968388 * scale + translationX,
7.00028574994551 * scale + translationY,
17.47150227365602 * scale + translationX,
7.105593138353682 * scale + translationY,
17.28393251336043 * scale + translationX,
7.293162898649271 * scale + translationY,
);
path.cubicTo(
17.09636275306484 * scale + translationX,
7.480732658944861 * scale + translationY,
16.99105536465667 * scale + translationX,
7.7351760372572285 * scale + translationY,
16.99120934474283 * scale + translationX,
8.000439691467193 * scale + translationY,
);
path.lineTo(
16.991210000000002 * scale + translationX,
12.000439999999998 * scale + translationY,
);
path.cubicTo(
16.991210000000002 * scale + translationX,
12.55272474983079 * scale + translationY,
17.43892525016921 * scale + translationX,
13.000439999999998 * scale + translationY,
17.991210000000002 * scale + translationX,
13.000439999999998 * scale + translationY,
);
path.cubicTo(
18.543494749830796 * scale + translationX,
13.000439999999998 * scale + translationY,
18.991210000000002 * scale + translationX,
12.55272474983079 * scale + translationY,
18.991210000000002 * scale + translationX,
12.000439999999998 * scale + translationY,
);
path.lineTo(
18.991210000000002 * scale + translationX,
8.000439999999998 * scale + translationY,
);
path.cubicTo(
18.991363247700033 * scale + translationX,
7.735176037257228 * scale + translationY,
18.88605585929186 * scale + translationX,
7.480732658944861 * scale + translationY,
18.698486098996273 * scale + translationX,
7.293162898649271 * scale + translationY,
);
path.cubicTo(
18.510916338700678 * scale + translationX,
7.105593138353682 * scale + translationY,
18.25647296038831 * scale + translationX,
7.000285749945511 * scale + translationY,
17.991209306178348 * scale + translationX,
7.000439730031674 * scale + translationY,
);
path.close();
canvas.drawPath(path, paint);
}