Flutter笔记:完全基于Flutter绘图技术绘制一个精美的Dash图标(下)

Flutter笔记 完全基于Flutter绘图技术绘制一个精美的Dart吉祥物Dash


作者李俊才 (jcLee95)https://blog.csdn.net/qq_28550263
邮箱 : 291148484@163.com
本文地址https://blog.csdn.net/qq_28550263/article/details/134098955

另见:

上上篇文章:《完全基于Flutter绘图技术绘制一个精美的Dart语言吉祥物Dash(上)》

上一篇文章:《完全基于Flutter绘图技术绘制一个精美的Dart语言吉祥物Dash(中)》


【介绍】:本文完全基于Flutter绘图技术绘制一个精美的Dash图标(下)。

目 录


什么也不用多说了,今天我是来炫技的。完全基于Flutter绘图技术绘制一个精美的Dart吉祥物Dash


(上一篇博文中):

1. 上代码
第一部分:基本页面框架
第二部分:Dash 绘制器


(接续上一篇博文)

dart 复制代码
    var path150 = Path();
    path150.moveTo(696.04, 618.43);
    path150.quadraticBezierTo(706.75, 622.64, 713.05, 630.73);
    path150.quadraticBezierTo(724.82, 645.85, 736.52, 660.91);
    path150.arcTo(Rect.fromLTRB(734.73, 660.3, 739.19, 664.7), 29.8, 180.0, false);
    path150.lineTo(728.95, 728.25);
    path150.arcTo(Rect.fromLTRB(727.3000000000001, 728.13, 729.12, 729.93), -1.8, 180.0, false);
    path150.lineTo(705.20, 733.43);
    path150.quadraticBezierTo(704.74, 731.47, 705.43, 730.23);
    path150.quadraticBezierTo(710.20, 721.68, 715.10, 713.74);
    path150.arcTo(Rect.fromLTRB(711.58, 706.81, 719.64, 714.77), -35.6, -180.0, false);
    path150.lineTo(710.56, 687.25);
    path150.cubicTo(715.32, 685.70, 717.93, 683.03, 722.02, 680.42);
    path150.quadraticBezierTo(722.47, 680.13, 722.96, 680.36);
    path150.lineTo(728.74, 683.12);
    path150.arcTo(Rect.fromLTRB(728.78, 681.38, 730.0799999999999, 682.68), 0.0, -180.0, false);
    path150.lineTo(724.96, 678.46);
    path150.quadraticBezierTo(724.44, 678.04, 724.99, 677.65);
    path150.quadraticBezierTo(726.67, 676.46, 727.02, 674.31);
    path150.quadraticBezierTo(727.12, 673.65, 726.52, 673.38);
    path150.lineTo(723.27, 671.89);
    path150.quadraticBezierTo(722.76, 671.65, 722.23, 671.84);
    path150.lineTo(716.84, 673.78);
    path150.arcTo(Rect.fromLTRB(714.71, 675.22, 718.3299999999999, 678.8399999999999), 0.0, -180.0, false);
    path150.lineTo(719.52, 678.84);
    path150.arcTo(Rect.fromLTRB(719.0500000000001, 679.1800000000001, 720.09, 680.2), 41.7, 180.0, false);
    path150.lineTo(712.85, 684.81);
    path150.arcTo(Rect.fromLTRB(711.05, 683.28, 712.47, 684.7), 0.0, 180.0, false);
    path150.lineTo(714.95, 675.80);
    path150.arcTo(Rect.fromLTRB(714.0600000000001, 674.34, 715.92, 676.14), 50.2, -180.0, false);
    path150.lineTo(714.64, 673.79);
    path150.arcTo(Rect.fromLTRB(714.0300000000001, 671.96, 715.87, 673.78), 64.0, 180.0, false);
    path150.lineTo(719.50, 669.16);
    path150.arcTo(Rect.fromLTRB(717.99, 666.97, 719.5899999999999, 668.5699999999999), 0.0, -180.0, false);
    path150.lineTo(709.58, 670.30);
    path150.arcTo(Rect.fromLTRB(708.73, 670.79, 710.01, 672.0699999999999), 0.0, -180.0, false);
    path150.lineTo(710.65, 672.38);
    path150.quadraticBezierTo(711.16, 672.76, 710.65, 673.14);
    path150.lineTo(708.19, 674.98);
    path150.quadraticBezierTo(706.00, 671.80, 707.52, 668.37);
    path150.quadraticBezierTo(709.32, 668.95, 709.53, 667.50);
    path150.quadraticBezierTo(709.81, 665.65, 710.17, 664.49);
    path150.arcTo(Rect.fromLTRB(710.4799999999999, 664.2199999999999, 711.14, 664.88), 0.0, 180.0, false);
    path150.quadraticBezierTo(711.00, 666.02, 712.30, 666.18);
    path150.quadraticBezierTo(713.21, 666.29, 714.09, 665.48);
    path150.quadraticBezierTo(715.64, 664.04, 716.73, 662.09);
    path150.quadraticBezierTo(717.00, 661.60, 716.45, 661.48);
    path150.quadraticBezierTo(714.15, 660.95, 712.05, 662.03);
    path150.arcTo(Rect.fromLTRB(710.8900000000001, 660.5500000000001, 712.01, 661.65), 12.3, 180.0, false);
    path150.quadraticBezierTo(715.32, 658.09, 718.97, 661.10);
    path150.quadraticBezierTo(719.47, 661.51, 719.19, 662.08);
    path150.lineTo(717.32, 666.06);
    path150.arcTo(Rect.fromLTRB(717.4200000000001, 666.33, 718.78, 667.6899999999999), 0.0, -180.0, false);
    path150.cubicTo(720.62, 666.38, 723.03, 665.36, 724.32, 662.90);
    path150.quadraticBezierTo(726.71, 658.33, 726.35, 653.90);
    path150.arcTo(Rect.fromLTRB(720.94, 651.12, 724.76, 654.92), 59.1, -180.0, false);
    path150.quadraticBezierTo(721.43, 655.22, 721.13, 658.02);
    path150.quadraticBezierTo(721.05, 658.77, 720.45, 658.32);
    path150.lineTo(718.96, 657.21);
    path150.quadraticBezierTo(718.62, 656.96, 718.21, 657.06);
    path150.lineTo(712.56, 658.49);
    path150.arcTo(Rect.fromLTRB(711.08, 657.26, 712.4, 658.5799999999999), 0.0, 180.0, false);
    path150.quadraticBezierTo(711.58, 656.26, 713.18, 656.27);
    path150.quadraticBezierTo(713.75, 656.27, 714.15, 655.86);
    path150.lineTo(714.80, 655.19);
    path150.arcTo(Rect.fromLTRB(713.86, 653.9, 714.84, 654.86), 16.1, -180.0, false);
    path150.quadraticBezierTo(712.80, 654.70, 711.55, 653.83);
    path150.arcTo(Rect.fromLTRB(709.8199999999999, 653.27, 711.28, 654.73), 0.0, -180.0, false);
    path150.lineTo(709.48, 655.45);
    path150.arcTo(Rect.fromLTRB(707.9499999999999, 654.89, 709.15, 656.07), 42.9, 180.0, false);
    path150.quadraticBezierTo(706.62, 653.23, 703.57, 656.30);
    path150.quadraticBezierTo(700.52, 643.33, 697.64, 630.98);
    path150.quadraticBezierTo(695.87, 623.41, 696.04, 618.43);
    path150.close();
    path150.moveTo(712.01, 668.37);
    path150.lineTo(713.32, 668.08);
    path150.quadraticBezierTo(713.78, 667.98, 713.67, 667.53);
    path150.quadraticBezierTo(713.54, 666.98, 712.75, 666.97);
    path150.quadraticBezierTo(711.78, 666.96, 711.42, 667.35);
    path150.arcTo(Rect.fromLTRB(711.39, 667.75, 712.63, 668.99), 0.0, -180.0, false);
    path150.close();

    canvas.drawPath(path150, paint150);

    final paint151 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path151 = Path();
    path151.moveTo(576.22, 686.84);
    path151.quadraticBezierTo(573.93, 687.68, 571.64, 686.34);
    path151.arcTo(Rect.fromLTRB(571.14, 683.87, 572.88, 685.59), 58.1, 180.0, false);
    path151.lineTo(574.29, 684.57);
    path151.quadraticBezierTo(575.03, 684.87, 575.34, 684.13);
    path151.quadraticBezierTo(575.53, 683.65, 575.11, 683.35);
    path151.quadraticBezierTo(573.76, 682.36, 574.48, 680.76);
    path151.arcTo(Rect.fromLTRB(573.61, 679.36, 574.85, 680.6), 0.0, -180.0, false);
    path151.cubicTo(570.71, 677.89, 575.29, 674.86, 576.63, 673.31);
    path151.quadraticBezierTo(577.01, 672.87, 576.53, 672.53);
    path151.quadraticBezierTo(575.67, 671.93, 575.09, 672.56);
    path151.quadraticBezierTo(573.76, 673.99, 572.41, 674.55);
    path151.arcTo(Rect.fromLTRB(570.9, 673.53, 572.1999999999999, 674.8299999999999), 0.0, 180.0, false);
    path151.cubicTo(570.25, 670.77, 573.93, 670.35, 576.49, 669.98);
    path151.arcTo(Rect.fromLTRB(576.38, 668.64, 577.84, 670.08), -0.6, -180.0, false);
    path151.lineTo(577.85, 664.04);
    path151.quadraticBezierTo(577.95, 663.34, 577.36, 663.73);
    path151.cubicTo(572.33, 667.04, 566.51, 670.64, 561.60, 666.96);
    path151.arcTo(Rect.fromLTRB(560.79, 665.02, 562.31, 666.54), 0.0, 180.0, false);
    path151.quadraticBezierTo(563.08, 664.41, 565.50, 664.21);
    path151.quadraticBezierTo(572.49, 663.63, 578.54, 660.13);
    path151.arcTo(Rect.fromLTRB(577.79, 658.04, 580.51, 660.72), -6.2, -180.0, false);
    path151.cubicTo(579.97, 656.95, 582.96, 649.08, 586.18, 650.06);
    path151.quadraticBezierTo(589.64, 651.11, 589.95, 654.32);
    path151.arcTo(Rect.fromLTRB(588.44, 653.96, 590.94, 656.4200000000001), 62.3, 180.0, false);
    path151.quadraticBezierTo(586.84, 658.88, 584.04, 660.14);
    path151.quadraticBezierTo(579.45, 662.20, 580.71, 667.18);
    path151.quadraticBezierTo(580.86, 667.79, 581.49, 667.68);
    path151.lineTo(583.37, 667.33);
    path151.arcTo(Rect.fromLTRB(583.2900000000001, 668.08, 585.61, 670.4), 0.0, 180.0, false);
    path151.quadraticBezierTo(580.90, 673.26, 576.15, 676.16);
    path151.arcTo(Rect.fromLTRB(576.0600000000001, 677.5, 579.58, 681.02), 0.0, -180.0, false);
    path151.quadraticBezierTo(579.46, 678.48, 581.38, 678.55);
    path151.arcTo(Rect.fromLTRB(580.9, 679.32, 582.6999999999999, 681.12), 0.0, 180.0, false);
    path151.lineTo(579.18, 681.74);
    path151.quadraticBezierTo(578.73, 682.00, 578.79, 682.51);
    path151.quadraticBezierTo(579.10, 685.56, 576.22, 686.84);
    path151.close();
    path151.moveTo(581.43, 658.14);
    path151.quadraticBezierTo(581.29, 658.91, 582.05, 658.74);
    path151.quadraticBezierTo(586.04, 657.86, 587.98, 654.26);
    path151.arcTo(Rect.fromLTRB(586.95, 652.37, 588.69, 654.09), -54.1, -180.0, false);
    path151.lineTo(585.99, 651.44);
    path151.arcTo(Rect.fromLTRB(583.89, 650.62, 585.61, 652.34), 0.0, -180.0, false);
    path151.quadraticBezierTo(582.17, 654.32, 581.43, 658.14);
    path151.close();

    canvas.drawPath(path151, paint151);

    final paint152 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path152 = Path();
    path152.moveTo(595.32, 673.75);
    path152.quadraticBezierTo(594.01, 672.79, 595.15, 670.83);
    path152.quadraticBezierTo(601.57, 664.42, 603.83, 656.45);
    path152.cubicTo(604.37, 654.53, 603.68, 653.33, 603.13, 651.49);
    path152.arcTo(Rect.fromLTRB(603.49, 649.91, 604.97, 651.39), 0.0, 180.0, false);
    path152.quadraticBezierTo(608.40, 653.31, 608.88, 658.26);
    path152.arcTo(Rect.fromLTRB(609.15, 658.11, 609.91, 658.85), -25.8, -180.0, false);
    path152.quadraticBezierTo(613.22, 654.65, 617.29, 651.30);
    path152.quadraticBezierTo(618.32, 650.45, 619.02, 651.28);
    path152.arcTo(Rect.fromLTRB(618.24, 651.53, 619.72, 652.99), -43.2, 180.0, false);
    path152.lineTo(611.00, 660.52);
    path152.arcTo(Rect.fromLTRB(611.11, 660.72, 611.89, 661.5), 0.0, -180.0, false);
    path152.quadraticBezierTo(616.14, 657.96, 620.78, 654.88);
    path152.cubicTo(621.78, 654.21, 622.97, 654.01, 623.85, 654.82);
    path152.arcTo(Rect.fromLTRB(623.22, 655.12, 624.48, 656.38), 0.0, 180.0, false);
    path152.lineTo(612.98, 665.73);
    path152.arcTo(Rect.fromLTRB(613.04, 665.97, 613.8199999999999, 666.75), 0.0, -180.0, false);
    path152.cubicTo(615.01, 665.51, 617.86, 662.70, 619.65, 662.60);
    path152.arcTo(Rect.fromLTRB(619.4399999999999, 663.3199999999999, 621.6, 665.48), 0.0, 180.0, false);
    path152.lineTo(612.52, 673.45);
    path152.quadraticBezierTo(610.71, 675.49, 613.30, 674.64);
    path152.lineTo(620.00, 672.43);
    path152.arcTo(Rect.fromLTRB(620.37, 672.8499999999999, 623.2700000000001, 675.75), 0.0, 180.0, false);
    path152.quadraticBezierTo(621.18, 676.12, 619.74, 677.45);
    path152.arcTo(Rect.fromLTRB(619.55, 677.9699999999999, 620.95, 679.37), 0.0, -180.0, false);
    path152.quadraticBezierTo(621.85, 678.59, 622.97, 679.64);
    path152.arcTo(Rect.fromLTRB(622.2900000000001, 679.96, 623.65, 681.3199999999999), 0.0, 180.0, false);
    path152.quadraticBezierTo(617.81, 685.39, 611.42, 688.23);
    path152.arcTo(Rect.fromLTRB(610.46, 687.6500000000001, 611.3199999999999, 688.49), -27.6, 180.0, false);
    path152.quadraticBezierTo(610.76, 687.86, 610.78, 687.69);
    path152.quadraticBezierTo(610.79, 687.57, 610.94, 687.47);
    path152.quadraticBezierTo(615.21, 684.78, 618.83, 681.26);
    path152.quadraticBezierTo(619.43, 680.67, 619.31, 680.47);
    path152.arcTo(Rect.fromLTRB(615.8100000000001, 678.79, 618.57, 681.55), 0.0, -180.0, false);
    path152.cubicTo(615.06, 682.14, 611.66, 684.95, 609.18, 681.76);
    path152.arcTo(Rect.fromLTRB(608.44, 677.76, 611.56, 680.8599999999999), 63.5, 180.0, false);
    path152.cubicTo(612.55, 678.61, 617.06, 678.39, 617.89, 675.48);
    path152.arcTo(Rect.fromLTRB(616.8699999999999, 674.51, 617.75, 675.3900000000001), 0.0, -180.0, false);
    path152.lineTo(610.02, 677.74);
    path152.quadraticBezierTo(609.39, 677.98, 609.31, 677.31);
    path152.cubicTo(609.00, 674.63, 612.42, 671.00, 613.75, 668.71);
    path152.quadraticBezierTo(614.49, 667.42, 613.31, 668.33);
    path152.lineTo(609.19, 671.53);
    path152.arcTo(Rect.fromLTRB(606.44, 668.85, 608.7, 671.11), 0.0, 180.0, false);
    path152.lineTo(611.33, 664.70);
    path152.arcTo(Rect.fromLTRB(610.62, 663.9300000000001, 611.2399999999999, 664.55), 0.0, -180.0, false);
    path152.lineTo(608.65, 665.41);
    path152.arcTo(Rect.fromLTRB(606.91, 664.45, 609.11, 666.5699999999999), 34.9, 180.0, false);
    path152.lineTo(606.28, 665.21);
    path152.arcTo(Rect.fromLTRB(604.37, 664.5899999999999, 606.33, 666.53), 24.2, -180.0, false);
    path152.lineTo(600.96, 671.00);
    path152.arcTo(Rect.fromLTRB(600.2800000000001, 671.15, 601.6, 672.4499999999999), 46.6, -180.0, false);
    path152.lineTo(602.11, 673.36);
    path152.arcTo(Rect.fromLTRB(602.4799999999999, 672.75, 603.62, 673.8699999999999), -47.7, -180.0, false);
    path152.cubicTo(603.83, 672.00, 604.68, 668.80, 606.55, 669.06);
    path152.arcTo(Rect.fromLTRB(606.45, 669.23, 607.49, 670.27), 0.0, 180.0, false);
    path152.quadraticBezierTo(606.12, 672.14, 605.24, 674.43);
    path152.cubicTo(604.06, 677.50, 604.65, 680.37, 603.83, 683.54);
    path152.arcTo(Rect.fromLTRB(600.39, 682.75, 602.89, 685.25), 0.0, 180.0, false);
    path152.cubicTo(599.66, 681.47, 599.68, 676.68, 599.26, 673.57);
    path152.arcTo(Rect.fromLTRB(598.23, 672.85, 599.0699999999999, 673.67), 71.9, -180.0, false);
    path152.quadraticBezierTo(596.51, 674.41, 595.32, 673.75);
    path152.close();

    canvas.drawPath(path152, paint152);

    final paint153 = Paint()
      ..color = const Color(0xFF0c7bb7)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path153 = Path();
    path153.moveTo(581.43, 658.14);
    path153.quadraticBezierTo(582.17, 654.32, 584.75, 651.48);
    path153.arcTo(Rect.fromLTRB(585.13, 650.58, 586.85, 652.3000000000001), 0.0, 180.0, false);
    path153.lineTo(587.82, 653.23);
    path153.arcTo(Rect.fromLTRB(587.11, 653.4, 588.85, 655.12), -54.1, 180.0, false);
    path153.quadraticBezierTo(586.04, 657.86, 582.05, 658.74);
    path153.quadraticBezierTo(581.29, 658.91, 581.43, 658.14);
    path153.close();

    canvas.drawPath(path153, paint153);

    final paint154 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path154 = Path();
    path154.moveTo(650.59, 666.30);
    path154.lineTo(650.00, 675.72);
    path154.quadraticBezierTo(649.97, 676.26, 650.47, 676.44);
    path154.cubicTo(654.39, 677.84, 660.72, 680.05, 656.73, 685.59);
    path154.arcTo(Rect.fromLTRB(654.5, 684.2, 656.0999999999999, 685.8), 0.0, 180.0, false);
    path154.lineTo(655.66, 682.71);
    path154.arcTo(Rect.fromLTRB(654.49, 681.1899999999999, 655.97, 682.67), 0.0, -180.0, false);
    path154.lineTo(650.97, 680.07);
    path154.arcTo(Rect.fromLTRB(649.77, 679.97, 650.77, 680.97), 0.0, -180.0, false);
    path154.lineTo(649.90, 683.92);
    path154.arcTo(Rect.fromLTRB(648.5699999999999, 683.76, 650.25, 685.44), 0.0, 180.0, false);
    path154.lineTo(645.60, 686.35);
    path154.quadraticBezierTo(645.02, 686.62, 644.58, 686.16);
    path154.lineTo(640.48, 681.93);
    path154.arcTo(Rect.fromLTRB(639.49, 680.3100000000001, 641.1099999999999, 681.91), -57.9, 180.0, false);
    path154.cubicTo(641.31, 678.21, 644.40, 677.57, 646.84, 676.39);
    path154.arcTo(Rect.fromLTRB(646.4, 674.6099999999999, 648.34, 676.51), 78.3, -180.0, false);
    path154.lineTo(647.58, 668.47);
    path154.quadraticBezierTo(647.60, 667.80, 647.02, 668.12);
    path154.cubicTo(644.05, 669.72, 636.40, 674.18, 633.26, 672.77);
    path154.arcTo(Rect.fromLTRB(631.98, 669.1600000000001, 634.54, 671.72), 0.0, 180.0, false);
    path154.quadraticBezierTo(639.89, 667.45, 646.73, 663.72);
    path154.quadraticBezierTo(647.72, 663.18, 647.84, 661.85);
    path154.lineTo(648.22, 653.19);
    path154.arcTo(Rect.fromLTRB(649.02, 652.1, 650.72, 653.8000000000001), 0.0, 180.0, false);
    path154.quadraticBezierTo(650.94, 656.02, 650.72, 659.27);
    path154.arcTo(Rect.fromLTRB(650.83, 659.2900000000001, 651.65, 660.09), 83.6, -180.0, false);
    path154.quadraticBezierTo(652.46, 659.34, 652.26, 657.99);
    path154.quadraticBezierTo(652.00, 656.24, 652.17, 654.90);
    path154.arcTo(Rect.fromLTRB(652.4599999999999, 654.12, 653.4, 655.0600000000001), 0.0, 180.0, false);
    path154.quadraticBezierTo(656.32, 657.32, 653.97, 661.23);
    path154.quadraticBezierTo(652.17, 664.24, 650.59, 666.30);
    path154.close();

    canvas.drawPath(path154, paint154);

    final paint155 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path155 = Path();
    path155.moveTo(707.52, 668.37);
    path155.lineTo(706.89, 667.52);
    path155.arcTo(Rect.fromLTRB(705.9399999999999, 667.18, 706.66, 667.9), 0.0, -180.0, false);
    path155.quadraticBezierTo(705.06, 669.51, 702.85, 670.16);
    path155.arcTo(Rect.fromLTRB(701.3199999999999, 668.5699999999999, 702.7, 669.95), 0.0, 180.0, false);
    path155.quadraticBezierTo(703.49, 665.14, 707.38, 663.11);
    path155.quadraticBezierTo(707.87, 662.85, 707.41, 662.53);
    path155.quadraticBezierTo(707.02, 662.26, 706.50, 662.49);
    path155.quadraticBezierTo(702.49, 664.23, 698.80, 665.24);
    path155.arcTo(Rect.fromLTRB(697.55, 663.16, 699.01, 664.62), 0.0, 180.0, false);
    path155.quadraticBezierTo(703.40, 661.26, 708.27, 659.59);
    path155.quadraticBezierTo(709.46, 659.18, 709.52, 657.83);
    path155.quadraticBezierTo(709.55, 657.11, 708.88, 657.36);
    path155.lineTo(702.93, 659.52);
    path155.arcTo(Rect.fromLTRB(701.02, 657.4399999999999, 702.74, 659.16), 0.0, 180.0, false);
    path155.quadraticBezierTo(702.75, 656.72, 703.57, 656.30);
    path155.quadraticBezierTo(706.62, 653.23, 708.55, 655.48);
    path155.arcTo(Rect.fromLTRB(708.88, 654.86, 710.08, 656.0400000000001), 42.9, -180.0, false);
    path155.lineTo(710.55, 654.00);
    path155.arcTo(Rect.fromLTRB(710.8199999999999, 653.1, 712.28, 654.5600000000001), 0.0, 180.0, false);
    path155.quadraticBezierTo(712.80, 654.70, 714.35, 654.38);
    path155.arcTo(Rect.fromLTRB(714.31, 654.71, 715.29, 655.6700000000001), 16.1, 180.0, false);
    path155.lineTo(714.15, 655.86);
    path155.quadraticBezierTo(713.75, 656.27, 713.18, 656.27);
    path155.quadraticBezierTo(711.58, 656.26, 711.74, 657.92);
    path155.arcTo(Rect.fromLTRB(711.9, 657.83, 713.2199999999999, 659.15), 0.0, -180.0, false);
    path155.lineTo(718.21, 657.06);
    path155.quadraticBezierTo(718.62, 656.96, 718.96, 657.21);
    path155.lineTo(720.45, 658.32);
    path155.quadraticBezierTo(721.05, 658.77, 721.13, 658.02);
    path155.quadraticBezierTo(721.43, 655.22, 722.85, 653.02);
    path155.arcTo(Rect.fromLTRB(724.44, 652.0, 728.26, 655.8), 59.1, 180.0, false);
    path155.quadraticBezierTo(726.71, 658.33, 724.32, 662.90);
    path155.cubicTo(723.03, 665.36, 720.62, 666.38, 718.10, 667.01);
    path155.arcTo(Rect.fromLTRB(716.6400000000001, 665.38, 718.0, 666.7399999999999), 0.0, 180.0, false);
    path155.lineTo(719.19, 662.08);
    path155.quadraticBezierTo(719.47, 661.51, 718.97, 661.10);
    path155.quadraticBezierTo(715.32, 658.09, 711.45, 661.10);
    path155.arcTo(Rect.fromLTRB(711.49, 661.48, 712.6099999999999, 662.5799999999999), 12.3, -180.0, false);
    path155.quadraticBezierTo(714.15, 660.95, 716.45, 661.48);
    path155.quadraticBezierTo(717.00, 661.60, 716.73, 662.09);
    path155.quadraticBezierTo(715.64, 664.04, 714.09, 665.48);
    path155.quadraticBezierTo(713.21, 666.29, 712.30, 666.18);
    path155.quadraticBezierTo(711.00, 666.02, 710.81, 664.55);
    path155.arcTo(Rect.fromLTRB(709.8399999999999, 664.16, 710.5, 664.82), 0.0, -180.0, false);
    path155.quadraticBezierTo(709.81, 665.65, 709.53, 667.50);
    path155.quadraticBezierTo(709.32, 668.95, 707.52, 668.37);
    path155.close();

    canvas.drawPath(path155, paint155);

    final paint156 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path156 = Path();
    path156.moveTo(484.77, 676.97);
    path156.cubicTo(484.70, 672.73, 491.09, 669.21, 494.43, 668.37);
    path156.arcTo(Rect.fromLTRB(494.61, 669.02, 497.53, 671.94), 0.0, 180.0, false);
    path156.quadraticBezierTo(493.40, 675.39, 488.01, 677.00);
    path156.arcTo(Rect.fromLTRB(487.41, 677.5, 488.53000000000003, 678.6199999999999), 0.0, -180.0, false);
    path156.quadraticBezierTo(492.12, 679.63, 496.51, 678.70);
    path156.arcTo(Rect.fromLTRB(496.38000000000005, 679.0, 497.06, 679.6800000000001), 0.0, 180.0, false);
    path156.cubicTo(493.32, 680.91, 488.07, 682.36, 485.26, 679.09);
    path156.quadraticBezierTo(484.91, 678.69, 484.43, 678.91);
    path156.quadraticBezierTo(476.80, 682.31, 470.07, 680.68);
    path156.cubicTo(463.41, 679.07, 470.76, 659.62, 472.52, 655.92);
    path156.arcTo(Rect.fromLTRB(473.25, 654.85, 475.21000000000004, 656.7900000000001), 41.6, 180.0, false);
    path156.cubicTo(477.94, 661.77, 472.55, 669.80, 470.30, 675.66);
    path156.arcTo(Rect.fromLTRB(470.21, 676.11, 472.71, 678.59), 10.7, -180.0, false);
    path156.lineTo(484.32, 677.43);
    path156.quadraticBezierTo(484.78, 677.43, 484.77, 676.97);
    path156.close();
    path156.moveTo(493.4489, 670.8095);
    path156.arcTo(Rect.fromLTRB(487.54920000000004, 671.2614, 493.5892, 672.6414000000001), -34.5, -180.0, false);
    path156.arcTo(Rect.fromLTRB(485.4511, 673.5405, 491.49109999999996, 674.9205000000001), -34.5, -180.0, false);
    path156.arcTo(Rect.fromLTRB(488.3308, 672.3986, 494.3708, 673.7786000000001), -34.5, -180.0, false);
    path156.arcTo(Rect.fromLTRB(490.4289, 670.1194999999999, 496.46889999999996, 671.4995), -34.5, -180.0, false);
    path156.close();

    canvas.drawPath(path156, paint156);

    final paint157 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path157 = Path();
    path157.moveTo(666.77, 687.03);
    path157.quadraticBezierTo(665.25, 686.90, 664.92, 684.21);
    path157.lineTo(670.39, 676.87);
    path157.arcTo(Rect.fromLTRB(669.68, 675.99, 670.38, 676.6700000000001), -79.0, -180.0, false);
    path157.lineTo(667.90, 676.90);
    path157.arcTo(Rect.fromLTRB(664.5500000000001, 672.62, 667.85, 675.92), 0.0, 180.0, false);
    path157.lineTo(669.72, 669.97);
    path157.arcTo(Rect.fromLTRB(668.9599999999999, 668.74, 669.9, 669.6800000000001), 0.0, -180.0, false);
    path157.lineTo(666.42, 668.74);
    path157.arcTo(Rect.fromLTRB(664.71, 666.09, 666.77, 668.15), 0.0, 180.0, false);
    path157.lineTo(670.99, 659.78);
    path157.arcTo(Rect.fromLTRB(671.97, 659.09, 674.4300000000001, 661.5500000000001), 0.0, 180.0, false);
    path157.quadraticBezierTo(673.64, 663.51, 670.87, 665.07);
    path157.quadraticBezierTo(666.61, 667.46, 671.34, 666.23);
    path157.quadraticBezierTo(672.07, 666.04, 674.05, 665.10);
    path157.quadraticBezierTo(674.52, 664.87, 674.77, 664.42);
    path157.quadraticBezierTo(677.45, 659.70, 682.48, 657.56);
    path157.arcTo(Rect.fromLTRB(682.66, 657.51, 683.58, 658.4300000000001), 0.0, 180.0, false);
    path157.quadraticBezierTo(683.14, 659.53, 681.92, 660.46);
    path157.arcTo(Rect.fromLTRB(681.88, 660.81, 682.82, 661.75), 0.0, -180.0, false);
    path157.quadraticBezierTo(686.62, 659.85, 691.08, 658.09);
    path157.quadraticBezierTo(693.29, 657.22, 694.14, 658.96);
    path157.arcTo(Rect.fromLTRB(691.9, 659.5, 694.42, 662.02), 0.0, 180.0, false);
    path157.quadraticBezierTo(683.93, 661.90, 676.15, 666.62);
    path157.quadraticBezierTo(674.64, 667.53, 670.74, 672.47);
    path157.arcTo(Rect.fromLTRB(670.7299999999999, 672.66, 671.37, 673.3000000000001), 0.0, -180.0, false);
    path157.lineTo(673.97, 672.39);
    path157.arcTo(Rect.fromLTRB(673.9399999999999, 673.14, 676.42, 675.62), 0.0, 180.0, false);
    path157.lineTo(670.81, 679.78);
    path157.arcTo(Rect.fromLTRB(670.4499999999999, 680.18, 671.83, 681.5600000000001), 0.0, -180.0, false);
    path157.quadraticBezierTo(671.99, 681.14, 672.84, 680.08);
    path157.quadraticBezierTo(674.13, 678.46, 675.56, 676.96);
    path157.quadraticBezierTo(675.93, 676.57, 676.41, 676.81);
    path157.lineTo(676.84, 677.02);
    path157.arcTo(Rect.fromLTRB(676.37, 677.36, 677.9699999999999, 678.9399999999999), 29.0, 180.0, false);
    path157.quadraticBezierTo(673.30, 684.35, 666.77, 687.03);
    path157.close();

    canvas.drawPath(path157, paint157);

    final paint158 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path158 = Path();
    path158.moveTo(517.53, 671.21);
    path158.cubicTo(514.37, 671.19, 511.34, 669.27, 514.06, 665.97);
    path158.quadraticBezierTo(517.76, 661.45, 523.76, 660.71);
    path158.arcTo(Rect.fromLTRB(523.93, 660.9699999999999, 527.11, 664.13), 1.5, 180.0, false);
    path158.quadraticBezierTo(525.07, 665.22, 523.39, 667.65);
    path158.quadraticBezierTo(519.29, 673.61, 517.34, 680.94);
    path158.arcTo(Rect.fromLTRB(515.66, 680.12, 516.8000000000001, 681.2600000000001), 0.0, 180.0, false);
    path158.lineTo(517.94, 671.71);
    path158.quadraticBezierTo(518.04, 671.22, 517.53, 671.21);
    path158.close();
    path158.moveTo(520.00, 666.11);
    path158.quadraticBezierTo(520.47, 665.46, 520.84, 664.70);
    path158.arcTo(Rect.fromLTRB(519.56, 663.66, 520.54, 664.64), 0.0, -180.0, false);
    path158.lineTo(516.59, 667.75);
    path158.arcTo(Rect.fromLTRB(516.5, 668.0699999999999, 517.4200000000001, 668.99), 0.0, -180.0, false);
    path158.quadraticBezierTo(518.93, 668.40, 519.71, 666.62);
    path158.quadraticBezierTo(519.83, 666.35, 520.00, 666.11);
    path158.close();

    canvas.drawPath(path158, paint158);

    final paint159 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path159 = Path();
    path159.moveTo(451.53, 662.30);
    path159.quadraticBezierTo(452.25, 663.79, 451.76, 665.35);
    path159.arcTo(Rect.fromLTRB(450.45, 665.1500000000001, 451.57, 666.25), -69.5, 180.0, false);
    path159.quadraticBezierTo(449.15, 664.92, 448.94, 663.25);
    path159.quadraticBezierTo(448.76, 661.93, 450.01, 661.60);
    path159.arcTo(Rect.fromLTRB(450.2, 660.9799999999999, 452.85999999999996, 663.62), 69.5, 180.0, false);
    path159.close();

    canvas.drawPath(path159, paint159);

    final paint160 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path160 = Path();
    path160.moveTo(530.14, 674.95);
    path160.arcTo(Rect.fromLTRB(529.75, 673.75, 530.6099999999999, 674.6099999999999), 0.0, -180.0, false);
    path160.lineTo(526.63, 672.15);
    path160.arcTo(Rect.fromLTRB(525.41, 670.4300000000001, 527.0500000000001, 672.05), -68.8, 180.0, false);
    path160.lineTo(527.61, 665.68);
    path160.quadraticBezierTo(527.85, 664.70, 528.85, 664.54);
    path160.lineTo(536.56, 663.33);
    path160.arcTo(Rect.fromLTRB(536.65, 663.4300000000001, 537.93, 664.71), 0.0, 180.0, false);
    path160.lineTo(536.70, 667.49);
    path160.arcTo(Rect.fromLTRB(535.19, 667.35, 536.75, 668.91), 0.0, 180.0, false);
    path160.lineTo(531.10, 668.37);
    path160.arcTo(Rect.fromLTRB(529.14, 669.5, 531.8000000000001, 672.1400000000001), 59.4, -180.0, false);
    path160.lineTo(534.38, 673.23);
    path160.arcTo(Rect.fromLTRB(532.3199999999999, 674.68, 536.72, 679.08), 0.0, 180.0, false);
    path160.quadraticBezierTo(530.02, 680.15, 524.46, 679.82);
    path160.arcTo(Rect.fromLTRB(522.9200000000001, 676.47, 525.22, 678.77), 0.0, 180.0, false);
    path160.lineTo(530.14, 674.95);
    path160.close();

    canvas.drawPath(path160, paint160);

    final paint161 = Paint()
      ..color = const Color(0xFFffffff)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path161 = Path();
    path161.moveTo(519.71, 666.62);
    path161.quadraticBezierTo(518.93, 668.40, 516.96, 668.53);
    path161.arcTo(Rect.fromLTRB(516.13, 667.29, 517.0500000000001, 668.21), 0.0, 180.0, false);
    path161.lineTo(520.05, 664.15);
    path161.arcTo(Rect.fromLTRB(520.35, 664.21, 521.33, 665.19), 0.0, 180.0, false);
    path161.quadraticBezierTo(520.47, 665.46, 520.00, 666.11);
    path161.quadraticBezierTo(519.83, 666.35, 519.71, 666.62);
    path161.close();

    canvas.drawPath(path161, paint161);

    final paint162 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path162 = Path();
    path162.moveTo(683.85, 667.27);
    path162.quadraticBezierTo(685.75, 666.60, 687.69, 667.34);
    path162.arcTo(Rect.fromLTRB(686.1, 668.63, 688.92, 671.4499999999999), 0.0, 180.0, false);
    path162.quadraticBezierTo(685.22, 670.57, 683.49, 668.78);
    path162.arcTo(Rect.fromLTRB(682.9200000000001, 666.35, 684.78, 668.1899999999999), -31.7, 180.0, false);
    path162.close();

    canvas.drawPath(path162, paint162);

    final paint163 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path163 = Path();
    path163.moveTo(712.01, 668.37);
    path163.arcTo(Rect.fromLTRB(710.8, 666.73, 712.04, 667.97), 0.0, 180.0, false);
    path163.quadraticBezierTo(711.78, 666.96, 712.75, 666.97);
    path163.quadraticBezierTo(713.54, 666.98, 713.67, 667.53);
    path163.quadraticBezierTo(713.78, 667.98, 713.32, 668.08);
    path163.lineTo(712.01, 668.37);
    path163.close();

    canvas.drawPath(path163, paint163);

    final paint164 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path164 = Path();
    path164.moveTo(710.56, 687.25);
    path164.lineTo(709.45, 685.97);
    path164.lineTo(713.53, 675.11);
    path164.arcTo(Rect.fromLTRB(711.7900000000001, 673.74, 713.11, 675.06), 0.0, -180.0, false);
    path164.quadraticBezierTo(710.19, 676.55, 707.23, 677.43);
    path164.arcTo(Rect.fromLTRB(705.7, 676.2700000000001, 707.06, 677.63), 0.0, 180.0, false);
    path164.quadraticBezierTo(706.29, 676.59, 706.40, 676.13);
    path164.lineTo(708.19, 674.98);
    path164.lineTo(710.65, 673.14);
    path164.quadraticBezierTo(711.16, 672.76, 710.65, 672.38);
    path164.lineTo(709.37, 671.43);
    path164.arcTo(Rect.fromLTRB(708.94, 669.66, 710.22, 670.9399999999999), 0.0, 180.0, false);
    path164.lineTo(718.79, 667.77);
    path164.arcTo(Rect.fromLTRB(718.7, 668.36, 720.3, 669.9599999999999), 0.0, 180.0, false);
    path164.lineTo(714.95, 672.87);
    path164.arcTo(Rect.fromLTRB(713.72, 672.88, 715.56, 674.6999999999999), 64.0, -180.0, false);
    path164.lineTo(714.99, 675.24);
    path164.arcTo(Rect.fromLTRB(714.0200000000001, 674.9, 715.88, 676.6999999999999), 50.2, 180.0, false);
    path164.lineTo(711.76, 683.99);
    path164.arcTo(Rect.fromLTRB(712.14, 684.0999999999999, 713.5600000000001, 685.52), 0.0, -180.0, false);
    path164.lineTo(719.57, 679.69);
    path164.arcTo(Rect.fromLTRB(719.0, 678.33, 720.04, 679.35), 41.7, -180.0, false);
    path164.lineTo(716.52, 677.03);
    path164.arcTo(Rect.fromLTRB(715.0300000000001, 671.97, 718.65, 675.5899999999999), 0.0, 180.0, false);
    path164.lineTo(722.23, 671.84);
    path164.quadraticBezierTo(722.76, 671.65, 723.27, 671.89);
    path164.lineTo(726.52, 673.38);
    path164.quadraticBezierTo(727.12, 673.65, 727.02, 674.31);
    path164.quadraticBezierTo(726.67, 676.46, 724.99, 677.65);
    path164.quadraticBezierTo(724.44, 678.04, 724.96, 678.46);
    path164.lineTo(729.43, 682.03);
    path164.arcTo(Rect.fromLTRB(728.09, 682.47, 729.39, 683.77), 0.0, 180.0, false);
    path164.lineTo(722.96, 680.36);
    path164.quadraticBezierTo(722.47, 680.13, 722.02, 680.42);
    path164.cubicTo(717.93, 683.03, 715.32, 685.70, 710.56, 687.25);
    path164.close();
    path164.moveTo(724.27, 674.61);
    path164.lineTo(720.74, 675.80);
    path164.quadraticBezierTo(720.17, 675.99, 720.55, 676.47);
    path164.lineTo(721.37, 677.51);
    path164.arcTo(Rect.fromLTRB(721.77, 676.79, 723.29, 678.29), -43.4, -180.0, false);
    path164.lineTo(724.64, 675.17);
    path164.arcTo(Rect.fromLTRB(723.92, 674.26, 724.62, 674.96), 0.0, -180.0, false);
    path164.close();

    canvas.drawPath(path164, paint164);

    final paint165 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path165 = Path();
    path165.moveTo(456.96, 677.20);
    path165.quadraticBezierTo(460.56, 677.55, 463.99, 676.38);
    path165.arcTo(Rect.fromLTRB(463.98, 676.66, 464.78, 677.4399999999999), -75.5, 180.0, false);
    path165.cubicTo(462.14, 679.12, 456.93, 681.86, 454.16, 679.40);
    path165.cubicTo(452.19, 677.64, 453.13, 675.21, 454.50, 673.31);
    path165.cubicTo(455.71, 671.63, 459.24, 667.22, 461.71, 668.30);
    path165.arcTo(Rect.fromLTRB(460.84, 669.08, 462.92, 671.16), 0.0, 180.0, false);
    path165.quadraticBezierTo(458.35, 672.51, 456.54, 676.47);
    path165.arcTo(Rect.fromLTRB(456.44, 676.69, 457.47999999999996, 677.71), 15.3, -180.0, false);
    path165.close();

    canvas.drawPath(path165, paint165);

    final paint166 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path166 = Path();
    path166.moveTo(501.97, 678.09);
    path166.quadraticBezierTo(506.23, 679.67, 510.69, 678.58);
    path166.arcTo(Rect.fromLTRB(510.59000000000003, 678.8599999999999, 511.23, 679.5), 0.0, 180.0, false);
    path166.cubicTo(507.57, 680.86, 498.75, 683.25, 498.77, 676.66);
    path166.cubicTo(498.78, 672.78, 505.36, 669.17, 508.43, 668.37);
    path166.arcTo(Rect.fromLTRB(508.61, 669.05, 511.59000000000003, 672.03), 0.0, 180.0, false);
    path166.quadraticBezierTo(507.38, 675.39, 502.01, 676.93);
    path166.arcTo(Rect.fromLTRB(501.36, 677.48, 502.58000000000004, 678.7), 0.0, -180.0, false);
    path166.close();
    path166.moveTo(507.5615, 670.7125);
    path166.arcTo(Rect.fromLTRB(501.413, 671.1334, 507.693, 672.6334), -34.7, -180.0, false);
    path166.arcTo(Rect.fromLTRB(499.2585, 673.5375, 505.5385, 675.0375), -34.7, -180.0, false);
    path166.arcTo(Rect.fromLTRB(502.267, 672.3666, 508.54699999999997, 673.8666), -34.7, -180.0, false);
    path166.arcTo(Rect.fromLTRB(504.42150000000004, 669.9625, 510.7015, 671.4625), -34.7, -180.0, false);
    path166.close();

    canvas.drawPath(path166, paint166);

继续

dart 复制代码
    final paint167 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path167 = Path();
    path167.moveTo(447.48, 683.91);
    path167.cubicTo(446.79, 685.50, 446.19, 687.42, 444.90, 688.71);
    path167.arcTo(Rect.fromLTRB(442.95, 687.47, 444.39000000000004, 688.9100000000001), 0.0, 180.0, false);
    path167.quadraticBezierTo(443.76, 679.33, 447.91, 672.02);
    path167.quadraticBezierTo(448.11, 671.67, 448.39, 670.83);
    path167.quadraticBezierTo(448.98, 669.09, 450.76, 670.32);
    path167.arcTo(Rect.fromLTRB(449.94, 670.37, 452.71999999999997, 673.13), -67.0, 180.0, false);
    path167.quadraticBezierTo(450.01, 678.08, 447.48, 683.91);
    path167.close();

    canvas.drawPath(path167, paint167);

    final paint168 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path168 = Path();
    path168.moveTo(556.82, 672.20);
    path168.cubicTo(554.40, 674.25, 549.08, 675.90, 546.05, 674.76);
    path168.arcTo(Rect.fromLTRB(545.05, 671.28, 547.4300000000001, 673.6600000000001), 0.0, 180.0, false);
    path168.quadraticBezierTo(551.42, 671.45, 556.69, 671.79);
    path168.quadraticBezierTo(557.25, 671.83, 556.82, 672.20);
    path168.close();

    canvas.drawPath(path168, paint168);

    final paint169 = Paint()
      ..color = const Color(0xFFd32735)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path169 = Path();
    path169.moveTo(691.96, 679.74);
    path169.arcTo(Rect.fromLTRB(690.79, 678.68, 691.73, 679.62), 0.0, -180.0, false);
    path169.lineTo(679.97, 687.00);
    path169.arcTo(Rect.fromLTRB(677.39, 685.48, 679.4499999999999, 687.54), 0.0, 180.0, false);
    path169.cubicTo(677.25, 683.32, 681.87, 679.28, 683.67, 676.77);
    path169.quadraticBezierTo(683.98, 676.33, 683.54, 676.03);
    path169.lineTo(682.78, 675.49);
    path169.arcTo(Rect.fromLTRB(681.96, 673.13, 683.72, 674.89), 0.0, 180.0, false);
    path169.quadraticBezierTo(685.27, 672.59, 688.19, 672.52);
    path169.arcTo(Rect.fromLTRB(687.98, 673.2099999999999, 690.1600000000001, 675.39), 0.0, 180.0, false);
    path169.lineTo(684.39, 680.08);
    path169.arcTo(Rect.fromLTRB(684.49, 680.3000000000001, 685.3499999999999, 681.14), 5.6, -180.0, false);
    path169.lineTo(691.49, 677.37);
    path169.arcTo(Rect.fromLTRB(692.36, 677.11, 696.2199999999999, 680.9499999999999), 75.6, 180.0, false);
    path169.quadraticBezierTo(694.47, 684.44, 689.49, 686.34);
    path169.arcTo(Rect.fromLTRB(687.0200000000001, 684.4399999999999, 689.12, 686.42), -10.9, 180.0, false);
    path169.quadraticBezierTo(688.07, 685.13, 688.60, 684.59);
    path169.quadraticBezierTo(690.75, 682.34, 691.96, 679.74);
    path169.close();

    canvas.drawPath(path169, paint169);

    final paint170 = Paint()
      ..color = const Color(0xFF2aa2dd)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path170 = Path();
    path170.moveTo(709.45, 685.97);
    path170.quadraticBezierTo(709.84, 681.95, 708.14, 677.99);
    path170.quadraticBezierTo(707.80, 677.21, 706.83, 677.40);
    path170.quadraticBezierTo(706.34, 677.49, 706.15, 677.03);
    path170.quadraticBezierTo(705.95, 676.57, 706.40, 676.13);
    path170.quadraticBezierTo(706.29, 676.59, 706.38, 676.95);
    path170.arcTo(Rect.fromLTRB(706.5500000000001, 676.75, 707.91, 678.1099999999999), 0.0, -180.0, false);
    path170.quadraticBezierTo(710.19, 676.55, 712.45, 674.40);
    path170.arcTo(Rect.fromLTRB(712.87, 674.45, 714.1899999999999, 675.77), 0.0, 180.0, false);
    path170.lineTo(709.45, 685.97);
    path170.close();

    canvas.drawPath(path170, paint170);

    final paint171 = Paint()
      ..color = const Color(0xFF2aa2dd)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path171 = Path();
    path171.moveTo(724.27, 674.61);
    path171.arcTo(Rect.fromLTRB(724.29, 674.8199999999999, 724.99, 675.52), 0.0, 180.0, false);
    path171.lineTo(722.53, 677.54);
    path171.arcTo(Rect.fromLTRB(720.61, 676.76, 722.13, 678.26), -43.4, 180.0, false);
    path171.lineTo(720.55, 676.47);
    path171.quadraticBezierTo(720.17, 675.99, 720.74, 675.80);
    path171.lineTo(724.27, 674.61);
    path171.close();

    canvas.drawPath(path171, paint171);

    final paint172 = Paint()
      ..color = const Color(0xFF787677)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path172 = Path();
    path172.moveTo(751.77, 747.94);
    path172.quadraticBezierTo(762.93, 725.24, 776.90, 704.14);
    path172.quadraticBezierTo(784.02, 693.38, 789.16, 688.78);
    path172.cubicTo(794.94, 683.61, 805.41, 676.31, 813.74, 677.48);
    path172.cubicTo(815.61, 677.75, 816.36, 679.15, 816.59, 680.99);
    path172.quadraticBezierTo(817.55, 688.75, 816.54, 696.01);
    path172.arcTo(Rect.fromLTRB(813.01, 695.45, 817.6099999999999, 700.05), 0.0, 180.0, false);
    path172.quadraticBezierTo(801.63, 704.91, 791.15, 716.20);
    path172.cubicTo(785.37, 722.41, 779.71, 731.24, 774.39, 738.88);
    path172.quadraticBezierTo(760.87, 758.31, 752.25, 780.17);
    path172.arcTo(Rect.fromLTRB(749.66, 779.6899999999999, 752.32, 782.33), -78.5, 180.0, false);
    path172.lineTo(743.24, 780.93);
    path172.quadraticBezierTo(741.90, 780.91, 742.06, 779.58);
    path172.cubicTo(743.46, 767.93, 746.27, 759.10, 751.77, 747.94);
    path172.close();

    canvas.drawPath(path172, paint172);

    final paint173 = Paint()
      ..color = const Color(0xFF787677)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path173 = Path();
    path173.moveTo(751.25, 788.10);
    path173.cubicTo(754.85, 788.60, 757.48, 785.15, 758.66, 782.17);
    path173.cubicTo(767.17, 760.58, 777.98, 744.77, 790.64, 727.37);
    path173.quadraticBezierTo(800.71, 713.54, 815.97, 704.74);
    path173.cubicTo(822.24, 701.12, 825.42, 704.97, 826.37, 710.91);
    path173.cubicTo(828.32, 723.02, 823.76, 736.88, 817.57, 747.80);
    path173.quadraticBezierTo(809.18, 762.62, 796.57, 780.05);
    path173.quadraticBezierTo(789.25, 790.18, 783.56, 795.18);
    path173.cubicTo(767.28, 809.49, 748.51, 813.19, 726.99, 815.39);
    path173.quadraticBezierTo(719.67, 816.13, 713.77, 814.65);
    path173.quadraticBezierTo(700.68, 811.37, 687.78, 807.40);
    path173.quadraticBezierTo(682.35, 805.73, 678.29, 801.88);
    path173.arcTo(Rect.fromLTRB(677.4300000000001, 799.6800000000001, 679.21, 801.46), 0.0, 180.0, false);
    path173.lineTo(706.29, 775.79);
    path173.quadraticBezierTo(706.72, 775.41, 707.22, 775.69);
    path173.quadraticBezierTo(722.00, 783.96, 738.77, 786.36);
    path173.quadraticBezierTo(745.00, 787.25, 751.25, 788.10);
    path173.close();

    canvas.drawPath(path173, paint173);

    final paint174 = Paint()
      ..color = const Color(0xFF787677)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path174 = Path();
    path174.moveTo(569.22, 834.65);
    path174.quadraticBezierTo(562.29, 823.68, 549.89, 823.31);
    path174.arcTo(Rect.fromLTRB(548.07, 822.35, 550.41, 824.63), -59.8, -180.0, false);
    path174.lineTo(546.14, 825.44);
    path174.arcTo(Rect.fromLTRB(544.64, 824.73, 546.18, 826.23), -47.3, 180.0, false);
    path174.cubicTo(542.05, 823.87, 536.36, 821.24, 532.74, 822.31);
    path174.arcTo(Rect.fromLTRB(530.57, 823.09, 533.41, 825.93), 0.0, -180.0, false);
    path174.lineTo(533.01, 825.91);
    path174.quadraticBezierTo(533.47, 826.55, 532.77, 826.91);
    path174.quadraticBezierTo(530.62, 828.02, 528.27, 827.55);
    path174.arcTo(Rect.fromLTRB(525.88, 825.52, 528.88, 828.48), -12.9, 180.0, false);
    path174.cubicTo(523.46, 821.89, 519.16, 817.71, 512.25, 817.62);
    path174.arcTo(Rect.fromLTRB(509.88, 816.4399999999999, 512.84, 819.36), -62.1, -180.0, false);
    path174.cubicTo(508.99, 819.67, 506.86, 823.17, 503.51, 821.11);
    path174.cubicTo(501.38, 819.81, 497.56, 815.32, 495.48, 812.90);
    path174.quadraticBezierTo(493.76, 810.91, 492.50, 807.86);
    path174.cubicTo(490.12, 802.16, 485.45, 798.87, 483.14, 793.05);
    path174.cubicTo(481.70, 789.43, 478.90, 787.07, 476.91, 783.83);
    path174.arcTo(Rect.fromLTRB(472.19, 780.0, 477.39000000000004, 785.1800000000001), 75.2, -180.0, false);
    path174.cubicTo(470.26, 782.41, 468.52, 780.89, 465.39, 777.85);
    path174.cubicTo(461.63, 774.21, 457.80, 773.53, 453.03, 775.77);
    path174.quadraticBezierTo(447.07, 778.56, 440.41, 779.46);
    path174.quadraticBezierTo(436.77, 773.57, 436.25, 769.50);
    path174.quadraticBezierTo(435.62, 764.51, 435.24, 749.38);
    path174.quadraticBezierTo(435.15, 745.66, 436.33, 743.33);
    path174.cubicTo(437.86, 740.30, 440.67, 737.50, 443.43, 735.82);
    path174.cubicTo(456.55, 727.84, 474.07, 758.67, 478.50, 767.04);
    path174.quadraticBezierTo(487.53, 784.11, 496.11, 801.42);
    path174.cubicTo(497.55, 804.33, 501.94, 804.22, 501.14, 799.95);
    path174.quadraticBezierTo(496.32, 774.42, 495.39, 760.67);
    path174.quadraticBezierTo(494.62, 749.31, 495.35, 737.92);
    path174.cubicTo(495.97, 728.34, 502.82, 705.59, 517.35, 710.28);
    path174.cubicTo(522.05, 711.80, 525.14, 715.03, 527.29, 719.72);
    path174.quadraticBezierTo(532.54, 731.15, 533.50, 742.51);
    path174.quadraticBezierTo(536.25, 774.71, 537.85, 786.52);
    path174.quadraticBezierTo(538.36, 790.29, 542.45, 792.20);
    path174.quadraticBezierTo(542.86, 792.39, 543.27, 792.23);
    path174.quadraticBezierTo(544.93, 791.56, 545.18, 789.99);
    path174.quadraticBezierTo(548.68, 767.82, 556.63, 748.05);
    path174.cubicTo(559.25, 741.53, 562.35, 737.71, 566.84, 732.34);
    path174.quadraticBezierTo(570.99, 727.39, 576.72, 727.64);
    path174.arcTo(Rect.fromLTRB(576.04, 726.3599999999999, 579.44, 729.74), 66.8, 180.0, false);
    path174.cubicTo(583.71, 733.29, 584.72, 738.80, 586.54, 747.56);
    path174.quadraticBezierTo(589.14, 760.10, 588.83, 772.93);
    path174.cubicTo(588.59, 782.53, 584.44, 790.86, 582.27, 800.10);
    path174.quadraticBezierTo(578.17, 817.60, 569.22, 834.65);
    path174.close();

    canvas.drawPath(path174, paint174);

    final paint175 = Paint()
      ..color = const Color(0xFFffffff)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path175 = Path();
    path175.moveTo(758.15, 715.36);
    path175.quadraticBezierTo(755.11, 722.16, 750.27, 728.26);
    path175.quadraticBezierTo(750.02, 728.58, 749.26, 728.50);
    path175.lineTo(758.15, 715.36);
    path175.close();

    canvas.drawPath(path175, paint175);

    final paint176 = Paint()
      ..color = const Color(0xFF6e6c6d)
      ..style = PaintingStyle.fill
      ..strokeWidth = 1;

    var path176 = Path();
    path176.moveTo(569.22, 834.65);
    path176.quadraticBezierTo(562.22, 843.76, 551.98, 852.01);
    path176.quadraticBezierTo(543.23, 859.06, 531.96, 860.56);
    path176.quadraticBezierTo(528.48, 861.03, 518.00, 861.26);
    path176.cubicTo(513.45, 861.36, 511.53, 860.42, 506.88, 858.34);
    path176.cubicTo(495.88, 853.42, 486.49, 847.55, 477.87, 838.71);
    path176.cubicTo(462.28, 822.72, 446.88, 801.11, 440.41, 779.46);
    path176.quadraticBezierTo(447.07, 778.56, 453.03, 775.77);
    path176.cubicTo(457.80, 773.53, 461.63, 774.21, 465.39, 777.85);
    path176.cubicTo(468.52, 780.89, 470.26, 782.41, 474.79, 782.59);
    path176.arcTo(Rect.fromLTRB(474.31, 781.24, 479.51000000000005, 786.4200000000001), 75.2, 180.0, false);
    path176.cubicTo(478.90, 787.07, 481.70, 789.43, 483.14, 793.05);
    path176.cubicTo(485.45, 798.87, 490.12, 802.16, 492.50, 807.86);
    path176.quadraticBezierTo(493.76, 810.91, 495.48, 812.90);
    path176.cubicTo(497.56, 815.32, 501.38, 819.81, 503.51, 821.11);
    path176.cubicTo(506.86, 823.17, 508.99, 819.67, 511.36, 817.90);
    path176.arcTo(Rect.fromLTRB(510.77, 816.16, 513.73, 819.08), -62.1, 180.0, false);
    path176.cubicTo(519.16, 817.71, 523.46, 821.89, 527.38, 827.00);
    path176.arcTo(Rect.fromLTRB(526.77, 826.0699999999999, 529.77, 829.03), -12.9, -180.0, false);
    path176.quadraticBezierTo(530.62, 828.02, 532.77, 826.91);
    path176.quadraticBezierTo(533.47, 826.55, 533.01, 825.91);
    path176.lineTo(531.99, 824.51);
    path176.arcTo(Rect.fromLTRB(531.32, 820.89, 534.16, 823.7299999999999), 0.0, 180.0, false);
    path176.cubicTo(536.36, 821.24, 542.05, 823.87, 545.41, 825.48);
    path176.arcTo(Rect.fromLTRB(545.37, 824.69, 546.91, 826.19), -47.3, -180.0, false);
    path176.lineTo(549.24, 823.49);
    path176.arcTo(Rect.fromLTRB(548.72, 822.17, 551.06, 824.4499999999999), -59.8, 180.0, false);
    path176.quadraticBezierTo(562.29, 823.68, 569.22, 834.65);
    path176.close();

    canvas.drawPath(path176, paint176);

  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return false;
  }
}

最后效果如下

后记:我难道会一条一条写吗?

本来是想做一个图标模块解决,Flutter字体图标不能实现多彩色缺陷的(事实上Flutter字体图标是依据canvas绘制的,但是目前section.json文件的颜色信息是不能被Flutter支持的!并且很多在Web中可以使用的字体图标不经过处理是不能再Flutter中使用的!!!)。因此我自己写了一个小工具转换的,本来是想用于转换我做好的彩色图标的。

但是目前很多简单的图片效果反而很难看,有一些曲线的指令不是很好处理。但是突然发现,涉及的绘图指令越多的、复杂图形,由于丢失部分反而不打紧,更加与原先画质接近。

于是做了这个dash图标,类似地,我还绘制了一些其它地图片,比如复杂的------

上面这张图一共用了数万行代码,如果是人工一定做不到的。相比于使用图像,Flutter绘图的意义在于实现了另外一个展示图形的机制,并且可以配合变换和动画实现静态图片实现不了的复杂效果。

我想,如果有兴趣的、并且在这方面有经验的大神,可以一起研究和探讨这个课题,并制作和相关相关轮子。

相关推荐
君蓦9 小时前
Flutter 本地存储与数据库的使用和优化
flutter
problc19 小时前
Flutter中文字体设置指南:打造个性化的应用体验
android·javascript·flutter
lqj_本人1 天前
鸿蒙next选择 Flutter 开发跨平台应用的原因
flutter·华为·harmonyos
lqj_本人1 天前
Flutter&鸿蒙next 状态管理框架对比分析
flutter·华为·harmonyos
起司锅仔1 天前
Flutter启动流程(2)
flutter
hello world smile2 天前
最全的Flutter中pubspec.yaml及其yaml 语法的使用说明
android·前端·javascript·flutter·dart·yaml·pubspec.yaml
lqj_本人2 天前
Flutter 的 Widget 概述与常用 Widgets 与鸿蒙 Next 的对比
flutter·harmonyos
iFlyCai2 天前
极简实现酷炫动效:Flutter隐式动画指南第二篇之一些酷炫的隐式动画效果
flutter
lqj_本人2 天前
Flutter&鸿蒙next 中使用 MobX 进行状态管理
flutter·华为·harmonyos