paint method

  1. @override
void paint(
  1. Canvas canvas,
  2. Size size
)
override

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:

  1. Obtain an ImageStream, for example by calling ImageProvider.resolve on an AssetImage or NetworkImage object.

  2. 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.

  3. 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 / 19.87466279122853;
  final scaleY = size.height / 20.345036321857933;
  final scale = math.min(scaleX, scaleY);

  final translationX = (size.width - 19.87466279122853 * scale) / 2 - 2.1473372087714684 * scale;
  final translationY = (size.height - 20.345036321857933 * scale) / 2 - 1.7506163305883027 * scale;

  final path = Path();
  final paint = Paint()..color = color;

  path.moveTo(
    11.022 * scale + translationX,
    2.0 * scale + translationY,
  );

  path.lineTo(
    9.022 * scale + translationX,
    2.0 * scale + translationY,
  );

  path.cubicTo(
    8.469715250169207 * scale + translationX,
    2.0 * scale + translationY,
    8.022 * scale + translationX,
    2.4477152501692068 * scale + translationY,
    8.022 * scale + translationX,
    3.0 * scale + translationY,
  );

  path.cubicTo(
    8.022 * scale + translationX,
    3.5522847498307932 * scale + translationY,
    8.469715250169207 * scale + translationX,
    4.0 * scale + translationY,
    9.022 * scale + translationX,
    4.0 * scale + translationY,
  );

  path.lineTo(
    9.022 * scale + translationX,
    6.0 * scale + translationY,
  );

  path.lineTo(
    7.83771 * scale + translationX,
    6.0 * scale + translationY,
  );

  path.cubicTo(
    7.956269665579366 * scale + translationX,
    5.67976681996226 * scale + translationY,
    8.018616431963805 * scale + translationX,
    5.341458901006057 * scale + translationY,
    8.021999918512947 * scale + translationX,
    4.999999949210263 * scale + translationY,
  );

  path.cubicTo(
    8.022073926726296 * scale + translationX,
    3.6421179245484887 * scale + translationY,
    7.110060225409303 * scale + translationX,
    2.4534969059752374 * scale + translationY,
    5.798445241838008 * scale + translationX,
    2.10205661828177 * scale + translationY,
  );

  path.cubicTo(
    4.486830258266716 * scale + translationX,
    1.7506163305883027 * scale + translationY,
    3.1026975180489766 * scale + translationX,
    2.3239970720170406 * scale + translationY,
    2.4238300722357633 * scale + translationX,
    3.5000001043081292 * scale + translationY,
  );

  path.cubicTo(
    2.1473372087714684 * scale + translationX,
    3.978426734087179 * scale + translationY,
    2.311209368528745 * scale + translationX,
    4.590416437871044 * scale + translationY,
    2.789779888515119 * scale + translationX,
    4.866660374091114 * scale + translationY,
  );

  path.cubicTo(
    3.2683504085014925 * scale + translationX,
    5.142904310311184 * scale + translationY,
    3.8802548250633846 * scale + translationX,
    4.978713971761597 * scale + translationY,
    4.156249893628106 * scale + translationX,
    4.49999988483043 * scale + translationY,
  );

  path.cubicTo(
    4.335091292801824 * scale + translationX,
    4.190941902552934 * scale + translationY,
    4.664927495883059 * scale + translationX,
    4.0004503038921 * scale + translationY,
    5.022000306506616 * scale + translationX,
    4.000000244131115 * scale + translationY,
  );

  path.cubicTo(
    5.5742847498307935 * scale + translationX,
    4.0 * scale + translationY,
    6.022 * scale + translationX,
    4.447715250169207 * scale + translationY,
    6.022 * scale + translationX,
    5.0 * scale + translationY,
  );

  path.cubicTo(
    6.022 * scale + translationX,
    5.552284749830793 * scale + translationY,
    5.5742847498307935 * scale + translationX,
    6.0 * scale + translationY,
    5.022 * scale + translationX,
    6.0 * scale + translationY,
  );

  path.cubicTo(
    4.469715250169207 * scale + translationX,
    6.0 * scale + translationY,
    4.022 * scale + translationX,
    6.447715250169207 * scale + translationY,
    4.022 * scale + translationX,
    7.0 * scale + translationY,
  );

  path.cubicTo(
    4.022 * scale + translationX,
    7.552284749830793 * scale + translationY,
    4.469715250169207 * scale + translationX,
    8.0 * scale + translationY,
    5.022 * scale + translationX,
    8.0 * scale + translationY,
  );

  path.cubicTo(
    5.5742847498307935 * scale + translationX,
    8.0 * scale + translationY,
    6.022 * scale + translationX,
    8.447715250169207 * scale + translationY,
    6.022 * scale + translationX,
    9.0 * scale + translationY,
  );

  path.cubicTo(
    6.022 * scale + translationX,
    9.552284749830793 * scale + translationY,
    5.5742847498307935 * scale + translationX,
    10.0 * scale + translationY,
    5.022 * scale + translationX,
    10.0 * scale + translationY,
  );

  path.cubicTo(
    4.664938216372114 * scale + translationX,
    9.99953986257823 * scale + translationY,
    4.335115916600334 * scale + translationX,
    9.809049692678158 * scale + translationY,
    4.156280253669317 * scale + translationX,
    9.500000579811399 * scale + translationY,
  );

  path.cubicTo(
    3.880284825062616 * scale + translationX,
    9.021285669933075 * scale + translationY,
    3.268380408500724 * scale + translationX,
    8.857095331383489 * scale + translationY,
    2.78980988851435 * scale + translationX,
    9.133339267603558 * scale + translationY,
  );

  path.cubicTo(
    2.311239368527977 * scale + translationX,
    9.409583203823628 * scale + translationY,
    2.1473672087707003 * scale + translationX,
    10.021572907607492 * scale + translationY,
    2.423859937965574 * scale + translationX,
    10.499999731271004 * scale + translationY,
  );

  path.cubicTo(
    3.1027406355122658 * scale + translationX,
    11.675971739016678 * scale + translationY,
    4.486854714162701 * scale + translationX,
    12.249327444541294 * scale + translationY,
    5.798449121655227 * scale + translationX,
    11.897890786787327 * scale + translationY,
  );

  path.cubicTo(
    7.110043529147753 * scale + translationX,
    11.54645412903336 * scale + translationY,
    8.02205040202871 * scale + translationX,
    10.357861679287078 * scale + translationY,
    8.02200023907423 * scale + translationX,
    9.000000268220901 * scale + translationY,
  );

  path.cubicTo(
    8.018626039835615 * scale + translationX,
    8.658542715016846 * scale + translationY,
    7.956289432637814 * scale + translationX,
    8.320234850055366 * scale + translationY,
    7.837739920384649 * scale + translationX,
    7.999999918736421 * scale + translationY,
  );

  path.lineTo(
    9.022 * scale + translationX,
    8.0 * scale + translationY,
  );

  path.lineTo(
    9.022 * scale + translationX,
    11.0 * scale + translationY,
  );

  path.cubicTo(
    9.022 * scale + translationX,
    11.552284749830793 * scale + translationY,
    9.469715250169207 * scale + translationX,
    12.0 * scale + translationY,
    10.022 * scale + translationX,
    12.0 * scale + translationY,
  );

  path.cubicTo(
    10.574284749830793 * scale + translationX,
    12.0 * scale + translationY,
    11.022 * scale + translationX,
    11.552284749830793 * scale + translationY,
    11.022 * scale + translationX,
    11.0 * scale + translationY,
  );

  path.lineTo(
    11.022 * scale + translationX,
    4.0 * scale + translationY,
  );

  path.cubicTo(
    11.574284749830793 * scale + translationX,
    4.0 * scale + translationY,
    12.022 * scale + translationX,
    3.5522847498307932 * scale + translationY,
    12.022 * scale + translationX,
    3.0 * scale + translationY,
  );

  path.cubicTo(
    12.022 * scale + translationX,
    2.4477152501692068 * scale + translationY,
    11.574284749830793 * scale + translationX,
    2.0 * scale + translationY,
    11.022 * scale + translationX,
    2.0 * scale + translationY,
  );

  path.close();

  path.moveTo(
    14.022 * scale + translationX,
    7.0 * scale + translationY,
  );

  path.lineTo(
    15.022 * scale + translationX,
    7.0 * scale + translationY,
  );

  path.cubicTo(
    15.573987530110124 * scale + translationX,
    7.000716054498824 * scale + translationY,
    16.021283511735334 * scale + translationX,
    7.448012036124036 * scale + translationY,
    16.021999698123693 * scale + translationX,
    7.999999849269102 * scale + translationY,
  );

  path.lineTo(
    16.022 * scale + translationX,
    9.0 * scale + translationY,
  );

  path.cubicTo(
    16.022 * scale + translationX,
    9.552284749830793 * scale + translationY,
    16.469715250169205 * scale + translationX,
    10.0 * scale + translationY,
    17.022 * scale + translationX,
    10.0 * scale + translationY,
  );

  path.cubicTo(
    17.57428474983079 * scale + translationX,
    10.0 * scale + translationY,
    18.022 * scale + translationX,
    9.552284749830793 * scale + translationY,
    18.022 * scale + translationX,
    9.0 * scale + translationY,
  );

  path.lineTo(
    18.022 * scale + translationX,
    8.0 * scale + translationY,
  );

  path.cubicTo(
    18.020191313848304 * scale + translationX,
    6.3438947975992255 * scale + translationY,
    16.678104013284745 * scale + translationX,
    5.001807497035664 * scale + translationY,
    15.021999224094301 * scale + translationX,
    4.999999741743544 * scale + translationY,
  );

  path.lineTo(
    14.021999999999998 * scale + translationX,
    5.0 * scale + translationY,
  );

  path.cubicTo(
    13.469715250169205 * scale + translationX,
    5.0 * scale + translationY,
    13.021999999999998 * scale + translationX,
    5.447715250169207 * scale + translationY,
    13.021999999999998 * scale + translationX,
    6.0 * scale + translationY,
  );

  path.cubicTo(
    13.021999999999998 * scale + translationX,
    6.552284749830793 * scale + translationY,
    13.469715250169205 * scale + translationX,
    7.0 * scale + translationY,
    14.021999999999998 * scale + translationX,
    7.0 * scale + translationY,
  );

  path.close();

  path.moveTo(
    10.022 * scale + translationX,
    16.0 * scale + translationY,
  );

  path.lineTo(
    9.022 * scale + translationX,
    16.0 * scale + translationY,
  );

  path.cubicTo(
    8.470012016868163 * scale + translationX,
    15.999283512149844 * scale + translationY,
    8.02271603524295 * scale + translationX,
    15.551987530524634 * scale + translationY,
    8.021999848854593 * scale + translationX,
    14.999999717379566 * scale + translationY,
  );

  path.lineTo(
    8.022 * scale + translationX,
    14.0 * scale + translationY,
  );

  path.cubicTo(
    8.022 * scale + translationX,
    13.447715250169207 * scale + translationY,
    7.5742847498307935 * scale + translationX,
    13.0 * scale + translationY,
    7.022 * scale + translationX,
    13.0 * scale + translationY,
  );

  path.cubicTo(
    6.469715250169207 * scale + translationX,
    13.0 * scale + translationY,
    6.022 * scale + translationX,
    13.447715250169207 * scale + translationY,
    6.022 * scale + translationX,
    14.0 * scale + translationY,
  );

  path.lineTo(
    6.022 * scale + translationX,
    15.0 * scale + translationY,
  );

  path.cubicTo(
    6.023807444248044 * scale + translationX,
    16.656104014421075 * scale + translationY,
    7.365894744811606 * scale + translationX,
    17.998191314984638 * scale + translationY,
    9.02199953400205 * scale + translationX,
    17.999999070276758 * scale + translationY,
  );

  path.lineTo(
    10.022 * scale + translationX,
    18.0 * scale + translationY,
  );

  path.cubicTo(
    10.574284749830793 * scale + translationX,
    18.0 * scale + translationY,
    11.022 * scale + translationX,
    17.552284749830793 * scale + translationY,
    11.022 * scale + translationX,
    17.0 * scale + translationY,
  );

  path.cubicTo(
    11.022 * scale + translationX,
    16.447715250169207 * scale + translationY,
    10.574284749830793 * scale + translationX,
    16.0 * scale + translationY,
    10.022 * scale + translationX,
    16.0 * scale + translationY,
  );

  path.close();

  path.moveTo(
    21.022 * scale + translationX,
    15.0 * scale + translationY,
  );

  path.cubicTo(
    21.57428474983079 * scale + translationX,
    15.0 * scale + translationY,
    22.022 * scale + translationX,
    14.552284749830793 * scale + translationY,
    22.022 * scale + translationX,
    14.0 * scale + translationY,
  );

  path.cubicTo(
    22.022 * scale + translationX,
    13.447715250169207 * scale + translationY,
    21.57428474983079 * scale + translationX,
    13.0 * scale + translationY,
    21.022 * scale + translationX,
    13.0 * scale + translationY,
  );

  path.lineTo(
    18.022 * scale + translationX,
    13.0 * scale + translationY,
  );

  path.lineTo(
    18.022 * scale + translationX,
    12.5 * scale + translationY,
  );

  path.cubicTo(
    18.022 * scale + translationX,
    11.947715250169207 * scale + translationY,
    17.57428474983079 * scale + translationX,
    11.5 * scale + translationY,
    17.022 * scale + translationX,
    11.5 * scale + translationY,
  );

  path.cubicTo(
    16.469715250169205 * scale + translationX,
    11.5 * scale + translationY,
    16.022 * scale + translationX,
    11.947715250169207 * scale + translationY,
    16.022 * scale + translationX,
    12.5 * scale + translationY,
  );

  path.lineTo(
    16.022 * scale + translationX,
    13.0 * scale + translationY,
  );

  path.lineTo(
    13.021999999999998 * scale + translationX,
    13.0 * scale + translationY,
  );

  path.cubicTo(
    12.469715250169205 * scale + translationX,
    13.0 * scale + translationY,
    12.021999999999998 * scale + translationX,
    13.447715250169207 * scale + translationY,
    12.021999999999998 * scale + translationX,
    14.0 * scale + translationY,
  );

  path.cubicTo(
    12.021999999999998 * scale + translationX,
    14.552284749830793 * scale + translationY,
    12.469715250169205 * scale + translationX,
    15.0 * scale + translationY,
    13.021999999999998 * scale + translationX,
    15.0 * scale + translationY,
  );

  path.lineTo(
    18.206269999999996 * scale + translationX,
    15.0 * scale + translationY,
  );

  path.cubicTo(
    17.98004471025082 * scale + translationX,
    15.919055256226446 * scale + translationY,
    17.56243828389272 * scale + translationX,
    16.78003265317815 * scale + translationY,
    16.980740148083765 * scale + translationX,
    17.526670152844652 * scale + translationY,
  );

  path.cubicTo(
    16.74271070738856 * scale + translationX,
    17.21811016723505 * scale + translationY,
    16.532188249782113 * scale + translationX,
    16.889278204207145 * scale + translationY,
    16.351590082095182 * scale + translationX,
    16.54395008306095 * scale + translationY,
  );

  path.cubicTo(
    16.099721204773196 * scale + translationX,
    16.052613383705722 * scale + translationY,
    15.497233038100925 * scale + translationX,
    15.858486292033195 * scale + translationY,
    15.00589567746816 * scale + translationX,
    16.110355749307242 * scale + translationY,
  );

  path.cubicTo(
    14.514558316835398 * scale + translationX,
    16.362225206581293 * scale + translationY,
    14.320431225162867 * scale + translationX,
    16.964713373253563 * scale + translationY,
    14.572300682436916 * scale + translationX,
    17.456050733886325 * scale + translationY,
  );

  path.cubicTo(
    14.841613274553731 * scale + translationX,
    17.9765114624417 * scale + translationY,
    15.162953398550346 * scale + translationX,
    18.468355172197757 * scale + translationY,
    15.531399744377326 * scale + translationX,
    18.92404968853959 * scale + translationY,
  );

  path.cubicTo(
    14.80586930700753 * scale + translationX,
    19.450846524141447 * scale + translationY,
    13.980862447346562 * scale + translationX,
    19.824726929273275 * scale + translationY,
    13.106449980860555 * scale + translationX,
    20.022999970760264 * scale + translationY,
  );

  path.cubicTo(
    12.567887630806561 * scale + translationX,
    20.141799554769715 * scale + translationY,
    12.227154057029058 * scale + translationX,
    20.674167123161855 * scale + translationY,
    12.344823237127803 * scale + translationX,
    21.21297753870013 * scale + translationY,
  );

  path.cubicTo(
    12.46249241722655 * scale + translationX,
    21.751787954238406 * scale + translationY,
    12.994143740717867 * scale + translationX,
    22.093638018454982 * scale + translationY,
    13.533199913410398 * scale + translationX,
    21.977099859383713 * scale + translationY,
  );

  path.cubicTo(
    14.787889455444471 * scale + translationX,
    21.699616978238698 * scale + translationY,
    15.964831663994731 * scale + translationX,
    21.14560346210707 * scale + translationY,
    16.97820027005326 * scale + translationX,
    20.355460323771563 * scale + translationY,
  );

  path.cubicTo(
    18.000076746036452 * scale + translationX,
    21.14602406393328 * scale + translationY,
    19.18479641935891 * scale + translationX,
    21.69974167620771 * scale + translationY,
    20.446768472093147 * scale + translationX,
    21.976608357774214 * scale + translationY,
  );

  path.cubicTo(
    20.98615935407258 * scale + translationX,
    22.095652652446237 * scale + translationY,
    21.519907130588578 * scale + translationX,
    21.754833264070136 * scale + translationY,
    21.638846682540898 * scale + translationX,
    21.21542115774702 * scale + translationY,
  );

  path.cubicTo(
    21.757786234493214 * scale + translationX,
    20.676009051423904 * scale + translationY,
    21.41686482511694 * scale + translationX,
    20.142326433140603 * scale + translationY,
    20.877429993054875 * scale + translationX,
    20.023489993338945 * scale + translationY,
  );

  path.cubicTo(
    19.997227673482925 * scale + translationX,
    19.827796065775292 * scale + translationY,
    19.16536907043512 * scale + translationX,
    19.45708319851869 * scale + translationY,
    18.43133104727379 * scale + translationX,
    18.933401075801562 * scale + translationY,
  );

  path.cubicTo(
    19.356014746039605 * scale + translationX,
    17.795162403473146 * scale + translationY,
    19.9792920588228 * scale + translationX,
    16.442466510723595 * scale + translationY,
    20.24370989118085 * scale + translationX,
    14.999999919368179 * scale + translationY,
  );

  path.close();

  canvas.drawPath(path, paint);
}