RoiToTextConverter.cs 1.9 KB

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