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

举报
jcLee95 发表于 2023/10/29 03:07:24 2023/10/29
【摘要】 完全基于Flutter绘图技术绘制Dart语言吉祥物(Dash)-下
Flutter笔记
完全基于Flutter绘图技术绘制一个精美的Dart吉祥物Dash


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

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


(上一篇博文中):


(接续上一篇博文)

    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);

继续


...★★★★★★


【重要】此处由于华为云字数限制,省略了大量代码,可以在以下地址查看:

【重要】此处由于华为云字数限制,省略了大量代码,可以在以下地址查看:

【重要】此处由于华为云字数限制,省略了大量代码,可以在以下地址查看:

https://jclee95.blog.csdn.net/article/details/134098955


最后效果如下

在这里插入图片描述

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

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

但是目前很多简单的图片效果反而很难看,有一些曲线的指令不是很好处理。但是突然发现,涉及的绘图指令越多的、复杂图形,由于丢失部分反而不打紧,更加与原先画质接近。
于是做了这个dash图标,类似地,我还绘制了一些其它地图片,比如复杂的——

在这里插入图片描述
上面这张图一共用了数万行代码,如果是人工一定做不到的。相比于使用图像,Flutter绘图的意义在于实现了另外一个展示图形的机制,并且可以配合变换和动画实现静态图片实现不了的复杂效果。
我想,如果有兴趣的、并且在这方面有经验的大神,可以一起研究和探讨这个课题,并制作和相关相关轮子。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。