DisplayHelper.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. namespace HistoryView.Helper;
  2. public class MonitorInfo
  3. {
  4. public int Index { get; set; }
  5. public int StartPixVertical { get; set; }
  6. public int StartPixHorizontal { get; set; }
  7. public int ResolutionVertical { get; set; }
  8. public int ResolutionHorizontal { get; set; }
  9. }
  10. public partial class MonitorHelper : ObservableObject
  11. {
  12. public MonitorHelper()
  13. {
  14. this.LoadScreensInfo();
  15. }
  16. [ObservableProperty]
  17. private int _SelectedDisplay = 1;
  18. [ObservableProperty]
  19. private ObservableDictionary<int, MonitorInfo> _Monitors = [];
  20. public void LoadScreensInfo()
  21. {
  22. List<MonitorInfo> list = [];
  23. for (int i = 1; i <= System.Windows.Forms.Screen.AllScreens.Length; i++)
  24. {
  25. System.Drawing.Rectangle rec = System.Windows.Forms.Screen.AllScreens[i - 1].Bounds;
  26. MonitorInfo mi = new()
  27. {
  28. Index = i,
  29. ResolutionHorizontal = rec.Width,
  30. ResolutionVertical = rec.Height,
  31. StartPixHorizontal = rec.X,
  32. StartPixVertical = rec.Y,
  33. };
  34. list.Add(mi);
  35. }
  36. foreach (var item in list.OrderBy(m => m.StartPixHorizontal))
  37. this.Monitors.Add(item.Index, item);
  38. if (!BaseConfigFileLoader.Load(out BasicInfo? basicInfo) ||
  39. basicInfo is null || !this.Monitors.ContainsKey(basicInfo.SelectedDisplay))
  40. {
  41. this.SelectedDisplay = this.Monitors.FirstOrDefault().Key;
  42. return;
  43. }
  44. this.SelectedDisplay = basicInfo.SelectedDisplay;
  45. }
  46. }