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

  final translationX = (size.width - 20.316042397172453 * scale) / 2 - 1.90549966753703 * scale;
  final translationY = (size.height - 20.110423868037522 * scale) / 2 - 1.9254996675370304 * scale;

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

  path.moveTo(
    4.76 * scale + translationX,
    10.59 * scale + translationY,
  );

  path.cubicTo(
    5.312207406469293 * scale + translationX,
    10.661650702705314 * scale + translationY,
    5.817972676109391 * scale + translationX,
    10.272158459894834 * scale + translationY,
    5.88975737719243 * scale + translationX,
    9.71996845156376 * scale + translationY,
  );

  path.cubicTo(
    5.9615420782754684 * scale + translationX,
    9.167778443232688 * scale + translationY,
    5.572172569520964 * scale + translationX,
    8.661918679230912 * scale + translationY,
    5.019999995811431 * scale + translationX,
    8.589999992832709 * scale + translationY,
  );

  path.lineTo(
    3.26 * scale + translationX,
    8.15 * scale + translationY,
  );

  path.cubicTo(
    2.910605325640145 * scale + translationX,
    8.04288907121841 * scale + translationY,
    2.530607448867385 * scale + translationX,
    8.134899397615909 * scale + translationY,
    2.2689106670031816 * scale + translationX,
    8.389976217216208 * scale + translationY,
  );

  path.cubicTo(
    2.0072138851389782 * scale + translationX,
    8.64505303681651 * scale + translationY,
    1.90549966753703 * scale + translationX,
    9.022569267531434 * scale + translationY,
    2.003625300317589 * scale + translationX,
    9.37459305895312 * scale + translationY,
  );

  path.cubicTo(
    2.101750933098148 * scale + translationX,
    9.726616850374807 * scale + translationY,
    2.3840875631801035 * scale + translationX,
    9.997079997272023 * scale + translationY,
    2.7399999999999993 * scale + translationX,
    10.08 * scale + translationY,
  );

  path.lineTo(
    4.5 * scale + translationX,
    10.55 * scale + translationY,
  );

  path.cubicTo(
    4.583777054789904 * scale + translationX,
    10.577956922413204 * scale + translationY,
    4.671693751523508 * scale + translationX,
    10.591482568064528 * scale + translationY,
    4.759999984286376 * scale + translationX,
    10.589999965040487 * scale + translationY,
  );

  path.close();

  path.moveTo(
    8.620000000000001 * scale + translationX,
    5.0 * scale + translationY,
  );

  path.cubicTo(
    8.740664137329567 * scale + translationX,
    5.449217919767752 * scale + translationY,
    9.155131185717133 * scale + translationX,
    5.75592353557455 * scale + translationY,
    9.620000000000001 * scale + translationX,
    5.74 * scale + translationY,
  );

  path.cubicTo(
    9.706115293703549 * scale + translationX,
    5.753827360773375 * scale + translationY,
    9.793885001121375 * scale + translationX,
    5.753827360773375 * scale + translationY,
    9.880000149377961 * scale + translationX,
    5.740000086784361 * scale + translationY,
  );

  path.cubicTo(
    10.408231858926014 * scale + translationX,
    5.593870949685311 * scale + translationY,
    10.720415623743552 * scale + translationX,
    5.04977924528903 * scale + translationY,
    10.58 * scale + translationX,
    4.5200000000000005 * scale + translationY,
  );

  path.lineTo(
    10.11 * scale + translationX,
    2.7600000000000002 * scale + translationY,
  );

  path.cubicTo(
    10.027079997272022 * scale + translationX,
    2.404087563180104 * scale + translationY,
    9.756616850374806 * scale + translationX,
    2.1217509330981486 * scale + translationY,
    9.40459305895312 * scale + translationX,
    2.0236253003175895 * scale + translationY,
  );

  path.cubicTo(
    9.052569267531432 * scale + translationX,
    1.9254996675370304 * scale + translationY,
    8.675053036816507 * scale + translationX,
    2.027213885138979 * scale + translationY,
    8.419976217216208 * scale + translationX,
    2.288910667003182 * scale + translationY,
  );

  path.cubicTo(
    8.164899397615908 * scale + translationX,
    2.550607448867385 * scale + translationY,
    8.072889071218407 * scale + translationX,
    2.930605325640145 * scale + translationY,
    8.18 * scale + translationX,
    3.28 * scale + translationY,
  );

  path.close();

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

  path.cubicTo(
    13.261206035669957 * scale + translationX,
    14.801269183941798 * scale + translationY,
    12.999111470425106 * scale + translationX,
    14.688748865697795 * scale + translationY,
    12.725000000000001 * scale + translationX,
    14.688748865697795 * scale + translationY,
  );

  path.cubicTo(
    12.450888529574897 * scale + translationX,
    14.688748865697795 * scale + translationY,
    12.188793964330044 * scale + translationX,
    14.8012691839418 * scale + translationY,
    12.0 * scale + translationX,
    15.0 * scale + translationY,
  );

  path.lineTo(
    8.5 * scale + translationX,
    18.56 * scale + translationY,
  );

  path.cubicTo(
    7.644942751789832 * scale + translationX,
    19.38034531847881 * scale + translationY,
    6.295057576072854 * scale + translationX,
    19.38034531847881 * scale + translationY,
    5.440000127946414 * scale + translationX,
    18.560000436523058 * scale + translationY,
  );

  path.cubicTo(
    5.030817225851565 * scale + translationX,
    18.15603418945586 * scale + translationY,
    4.800496930156717 * scale + translationX,
    17.604997178372695 * scale + translationY,
    4.800496930156717 * scale + translationX,
    17.030001237555666 * scale + translationY,
  );

  path.cubicTo(
    4.800496930156717 * scale + translationX,
    16.455005296738637 * scale + translationY,
    5.030817225851566 * scale + translationX,
    15.903968285655473 * scale + translationY,
    5.44000039532019 * scale + translationX,
    15.500001126371862 * scale + translationY,
  );

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

  path.cubicTo(
    9.285376159720348 * scale + translationX,
    11.755610118517865 * scale + translationY,
    9.409681944265778 * scale + translationX,
    11.37188160493643 * scale + translationY,
    9.321810134984698 * scale + translationX,
    11.006581027546721 * scale + translationY,
  );

  path.cubicTo(
    9.233938325703619 * scale + translationX,
    10.64128045015701 * scale + translationY,
    8.94871954984299 * scale + translationX,
    10.356061674296381 * scale + translationY,
    8.58341897245328 * scale + translationX,
    10.268189865015302 * scale + translationY,
  );

  path.cubicTo(
    8.21811839506357 * scale + translationX,
    10.180318055734222 * scale + translationY,
    7.834389881482135 * scale + translationX,
    10.304623840279652 * scale + translationY,
    7.59 * scale + translationX,
    10.59 * scale + translationY,
  );

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

  path.cubicTo(
    2.3652373483790727 * scale + translationX,
    15.714763854259994 * scale + translationY,
    2.365237348379072 * scale + translationX,
    18.36523826501238 * scale + translationY,
    4.000000287906012 * scale + translationX,
    20.00000120453932 * scale + translationY,
  );

  path.cubicTo(
    5.634763227432951 * scale + translationX,
    21.634764144066263 * scale + translationY,
    8.285237638185341 * scale + translationX,
    21.634764144066263 * scale + translationY,
    9.920000577712281 * scale + translationX,
    20.000001204539323 * scale + translationY,
  );

  path.lineTo(
    13.45 * scale + translationX,
    16.47 * scale + translationY,
  );

  path.cubicTo(
    13.655211184610257 * scale + translationX,
    16.28068441628393 * scale + translationY,
    13.771932894176393 * scale + translationX,
    16.0141988906262 * scale + translationY,
    13.771932894176393 * scale + translationX,
    15.735 * scale + translationY,
  );

  path.cubicTo(
    13.771932894176393 * scale + translationX,
    15.455801109373798 * scale + translationY,
    13.655211184610257 * scale + translationX,
    15.18931558371607 * scale + translationY,
    13.45 * scale + translationX,
    15.0 * scale + translationY,
  );

  path.close();

  path.moveTo(
    5.18 * scale + translationX,
    6.59 * scale + translationY,
  );

  path.cubicTo(
    5.366260638525449 * scale + translationX,
    6.7747441636179 * scale + translationY,
    5.617660122615664 * scale + translationX,
    6.878895378455274 * scale + translationY,
    5.88 * scale + translationX,
    6.88 * scale + translationY,
  );

  path.cubicTo(
    6.145802984650029 * scale + translationX,
    6.881536758799638 * scale + translationY,
    6.401281169195305 * scale + translationX,
    6.777186514407904 * scale + translationY,
    6.589999999999999 * scale + translationX,
    6.589999999999999 * scale + translationY,
  );

  path.cubicTo(
    6.977723594710799 * scale + translationX,
    6.199962545689076 * scale + translationY,
    6.977723594710799 * scale + translationX,
    5.570037454310923 * scale + translationY,
    6.59 * scale + translationX,
    5.18 * scale + translationY,
  );

  path.lineTo(
    5.3 * scale + translationX,
    3.89 * scale + translationY,
  );

  path.cubicTo(
    4.903239722544299 * scale + translationX,
    3.5502232040712998 * scale + translationY,
    4.311805828454295 * scale + translationX,
    3.5730677303189706 * scale + translationY,
    3.942436779386633 * scale + translationX,
    3.942436779386633 * scale + translationY,
  );

  path.cubicTo(
    3.5730677303189706 * scale + translationX,
    4.311805828454295 * scale + translationY,
    3.5502232040712993 * scale + translationX,
    4.903239722544299 * scale + translationY,
    3.8899999999999997 * scale + translationX,
    5.3 * scale + translationY,
  );

  path.close();

  path.moveTo(
    21.259999999999998 * scale + translationX,
    13.92 * scale + translationY,
  );

  path.lineTo(
    19.499999999999996 * scale + translationX,
    13.45 * scale + translationY,
  );

  path.cubicTo(
    19.14442100772292 * scale + translationX,
    13.327094936053419 * scale + translationY,
    18.749950185085297 * scale + translationX,
    13.41416345552108 * scale + translationY,
    18.479143454454796 * scale + translationX,
    13.675325836306893 * scale + translationY,
  );

  path.cubicTo(
    18.208336723824296 * scale + translationX,
    13.936488217092705 * scale + translationY,
    18.10702697944752 * scale + translationX,
    14.327543830387041 * scale + translationY,
    18.21696255351261 * scale + translationX,
    14.68734411394373 * scale + translationY,
  );

  path.cubicTo(
    18.326898127577696 * scale + translationX,
    15.04714439750042 * scale + translationY,
    18.629472888958084 * scale + translationX,
    15.3147946744857 * scale + translationY,
    19.0 * scale + translationX,
    15.379999999999999 * scale + translationY,
  );

  path.lineTo(
    20.76 * scale + translationX,
    15.850000000000001 * scale + translationY,
  );

  path.lineTo(
    21.020000000000003 * scale + translationX,
    15.850000000000001 * scale + translationY,
  );

  path.cubicTo(
    21.57220739290263 * scale + translationX,
    15.921650698317052 * scale + translationY,
    22.07797266254331 * scale + translationX,
    15.532158455506496 * scale + translationY,
    22.149757363626396 * scale + translationX,
    14.979968447175064 * scale + translationY,
  );

  path.cubicTo(
    22.22154206470948 * scale + translationX,
    14.427778438843635 * scale + translationY,
    21.832172555954436 * scale + translationX,
    13.921918674841637 * scale + translationY,
    21.27999998224448 * scale + translationX,
    13.849999988443892 * scale + translationY,
  );

  path.close();

  path.moveTo(
    15.38 * scale + translationX,
    19.0 * scale + translationY,
  );

  path.cubicTo(
    15.30988761168527 * scale + translationX,
    18.743958270329507 * scale + translationY,
    15.14084445759931 * scale + translationX,
    18.526302092086937 * scale + translationY,
    14.910123412520251 * scale + translationX,
    18.394997432285844 * scale + translationY,
  );

  path.cubicTo(
    14.679402367441192 * scale + translationX,
    18.263692772484752 * scale + translationY,
    14.405939797543427 * scale + translationX,
    18.229516424882927 * scale + translationY,
    14.15 * scale + translationX,
    18.299999999999997 * scale + translationY,
  );

  path.cubicTo(
    13.62176814107399 * scale + translationX,
    18.446129050314692 * scale + translationY,
    13.309584376256451 * scale + translationX,
    18.990220754710972 * scale + translationY,
    13.450000000000001 * scale + translationX,
    19.52 * scale + translationY,
  );

  path.lineTo(
    13.920000000000002 * scale + translationX,
    21.28 * scale + translationY,
  );

  path.cubicTo(
    14.040664137329568 * scale + translationX,
    21.729217919767752 * scale + translationY,
    14.455131185717134 * scale + translationX,
    22.03592353557455 * scale + translationY,
    14.920000000000002 * scale + translationX,
    22.02 * scale + translationY,
  );

  path.cubicTo(
    15.00638720569475 * scale + translationX,
    22.02982742266901 * scale + translationY,
    15.093611183515666 * scale + translationX,
    22.02982742266901 * scale + translationY,
    15.179999187648308 * scale + translationX,
    22.01999882160841 * scale + translationY,
  );

  path.cubicTo(
    15.437887507550604 * scale + translationX,
    21.952048964681154 * scale + translationY,
    15.65794887534694 * scale + translationX,
    21.783901775869822 * scale + translationY,
    15.791273809806396 * scale + translationX,
    21.55293041053865 * scale + translationY,
  );

  path.cubicTo(
    15.924598744265854 * scale + translationX,
    21.32195904520748 * scale + translationY,
    15.960140624357539 * scale + translationX,
    21.0473006073959 * scale + translationY,
    15.890000000000002 * scale + translationX,
    20.79 * scale + translationY,
  );

  path.close();

  path.moveTo(
    18.82 * scale + translationX,
    17.43 * scale + translationY,
  );

  path.cubicTo(
    18.423239722544302 * scale + translationX,
    17.090223204071293 * scale + translationY,
    17.831805828454296 * scale + translationX,
    17.113067730318964 * scale + translationY,
    17.462436779386632 * scale + translationX,
    17.482436779386628 * scale + translationY,
  );

  path.cubicTo(
    17.093067730318968 * scale + translationX,
    17.85180582845429 * scale + translationY,
    17.070223204071297 * scale + translationX,
    18.443239722544295 * scale + translationY,
    17.41 * scale + translationX,
    18.839999999999996 * scale + translationY,
  );

  path.lineTo(
    18.7 * scale + translationX,
    20.13 * scale + translationY,
  );

  path.cubicTo(
    19.090037454310924 * scale + translationX,
    20.517723594710795 * scale + translationY,
    19.719962545689075 * scale + translationX,
    20.517723594710798 * scale + translationY,
    20.11 * scale + translationX,
    20.13 * scale + translationY,
  );

  path.cubicTo(
    20.4977235947108 * scale + translationX,
    19.739962545689075 * scale + translationY,
    20.4977235947108 * scale + translationX,
    19.11003745431092 * scale + translationY,
    20.11 * scale + translationX,
    18.719999999999995 * scale + translationY,
  );

  path.close();

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

  path.cubicTo(
    21.231791761167806 * scale + translationX,
    5.298620418469935 * scale + translationY,
    20.22416379906845 * scale + translationX,
    3.7494201620667926 * scale + translationY,
    18.65600474205384 * scale + translationX,
    3.088678986358391 * scale + translationY,
  );

  path.cubicTo(
    17.087845685039238 * scale + translationX,
    2.4279378106499894 * scale + translationY,
    15.27537620286842 * scale + translationX,
    2.7888947618831152 * scale + translationY,
    14.079999080716663 * scale + translationX,
    3.9999997388399606 * scale + translationY,
  );

  path.lineTo(
    10.55 * scale + translationX,
    7.5600000000000005 * scale + translationY,
  );

  path.cubicTo(
    10.152354583720788 * scale + translationX,
    7.9604061274428854 * scale + translationY,
    10.154593159860424 * scale + translationX,
    8.607354631797415 * scale + translationY,
    10.554999583595821 * scale + translationX,
    9.004999631920844 * scale + translationY,
  );

  path.cubicTo(
    10.955406007331218 * scale + translationX,
    9.402644632044273 * scale + translationY,
    11.602354511685746 * scale + translationX,
    9.40040605590464 * scale + translationY,
    11.999999511809177 * scale + translationX,
    8.999999632169242 * scale + translationY,
  );

  path.lineTo(
    15.5 * scale + translationX,
    5.44 * scale + translationY,
  );

  path.cubicTo(
    16.355057812679643 * scale + translationX,
    4.619655245990667 * scale + translationY,
    17.70494298839662 * scale + translationX,
    4.619655245990667 * scale + translationY,
    18.560000436523058 * scale + translationX,
    5.440000127946415 * scale + translationY,
  );

  path.cubicTo(
    18.969184518208092 * scale + translationX,
    5.843967554603802 * scale + translationY,
    19.199504813902937 * scale + translationX,
    6.395004565686965 * scale + translationY,
    19.199504813902937 * scale + translationX,
    6.970000506503992 * scale + translationY,
  );

  path.cubicTo(
    19.199504813902937 * scale + translationX,
    7.5449964473210205 * scale + translationY,
    18.969184518208092 * scale + translationX,
    8.096033458404184 * scale + translationY,
    18.56000134873947 * scale + translationX,
    8.500000617687796 * scale + translationY,
  );

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

  path.cubicTo(
    14.612276405289201 * scale + translationX,
    12.390037454310923 * scale + translationY,
    14.612276405289201 * scale + translationX,
    13.019962545689078 * scale + translationY,
    15.0 * scale + translationX,
    13.41 * scale + translationY,
  );

  path.cubicTo(
    15.390037454310923 * scale + translationX,
    13.7977235947108 * scale + translationY,
    16.019962545689076 * scale + translationX,
    13.7977235947108 * scale + translationY,
    16.41 * scale + translationX,
    13.41 * scale + translationY,
  );

  path.lineTo(
    20.0 * scale + translationX,
    9.92 * scale + translationY,
  );

  path.cubicTo(
    20.765405058712826 * scale + translationX,
    9.140346762609251 * scale + translationY,
    21.19600221947421 * scale + translationX,
    8.092560338089895 * scale + translationY,
    21.199999863045164 * scale + translationX,
    6.999999954779064 * scale + translationY,
  );

  path.close();

  canvas.drawPath(path, paint);
}