dots.dart 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import 'dart:ui';
  2. import 'package:fis_measure/view/paint/ai_patint_controller.dart';
  3. import 'package:fis_measure/view/paint/ai_patint_state.dart';
  4. import 'package:fis_measure/view/paint/parts/index.dart';
  5. import 'package:flutter/material.dart';
  6. import 'package:get/get.dart';
  7. import 'package:path_drawing/path_drawing.dart';
  8. /// ai描点
  9. class PaintAIDots extends CustomPainter {
  10. final AiDotsResults aiDotsResults;
  11. late final aiPatintController = Get.find<AiPatintController>();
  12. final int aiResultIndex;
  13. PaintAIDots(
  14. this.aiDotsResults,
  15. this.aiResultIndex,
  16. );
  17. bool get isSelected => aiResultIndex == aiDotsResults.aiResultsIndex;
  18. @override
  19. void paint(Canvas canvas, Size size) {
  20. final contoursPaint = Paint()
  21. ..color = Colors.green
  22. ..strokeCap = StrokeCap.round
  23. ..strokeWidth = 3.0
  24. ..style = PaintingStyle.stroke;
  25. // 遍历 contoursPoints 绘制轮廓
  26. if (aiDotsResults.aiResultsList.isNotEmpty) {
  27. Path path = Path();
  28. path.moveTo(
  29. aiDotsResults.aiResultsList[0].dx, aiDotsResults.aiResultsList[0].dy);
  30. for (int i = 1; i < aiDotsResults.aiResultsList.length; i++) {
  31. path.lineTo(aiDotsResults.aiResultsList[i].dx,
  32. aiDotsResults.aiResultsList[i].dy);
  33. }
  34. path.close();
  35. canvas.drawPath(
  36. dashPath(
  37. path,
  38. dashArray: CircularIntervalList<double>([1, 10]),
  39. ),
  40. isSelected ? aiPaintSelected : aiPaint,
  41. );
  42. }
  43. // canvas.drawPoints(
  44. // ///PointMode的枚举类型有三个,points(点),lines(线,隔点连接),polygon(线,相邻连接)
  45. // PointMode.points,
  46. // aiDotsResults.aiResultsList,
  47. // isSelected ? aiPaintSelected : aiPaint,
  48. // );
  49. }
  50. @override
  51. bool shouldRepaint(covariant PaintAIDots oldDelegate) {
  52. return oldDelegate.hashCode != hashCode;
  53. }
  54. }