RoiToTextConverter.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using System.Globalization;
  3. using System.Windows;
  4. using System.Windows.Data;
  5. namespace TeamAAS_VP.ValueConverter
  6. {
  7. public class RoiToTextConverter : IMultiValueConverter
  8. {
  9. public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
  10. {
  11. try
  12. {
  13. if (values == null || values.Length < 5)
  14. return "δÉèÖÃ";
  15. // Helper to get numeric value from different value types
  16. double GetDouble(object v)
  17. {
  18. if (v == null) return double.NaN;
  19. if (v is double d) return d;
  20. if (v is float f) return f;
  21. if (v is int i) return i;
  22. if (v is long l) return l;
  23. if (v is short s) return s;
  24. if (v is string s2 && double.TryParse(s2, out var p)) return p;
  25. if (v == DependencyProperty.UnsetValue) return double.NaN;
  26. return double.NaN;
  27. }
  28. double x = GetDouble(values[0]);
  29. double y = GetDouble(values[1]);
  30. double w = GetDouble(values[2]);
  31. double h = GetDouble(values[3]);
  32. double angle = GetDouble(values[4]);
  33. if (double.IsNaN(x) || double.IsNaN(y) || double.IsNaN(w) || double.IsNaN(h) || double.IsNaN(angle))
  34. return "δÉèÖÃ";
  35. if (w <= 0 || h <= 0)
  36. return "δÉèÖÃ";
  37. return $"X={x:F0}, Y={y:F0}, W={w:F0}, H={h:F0}, Angle={angle:F1}¡ã";
  38. }
  39. catch
  40. {
  41. return "δÉèÖÃ";
  42. }
  43. }
  44. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
  45. {
  46. throw new NotImplementedException();
  47. }
  48. }
  49. }