public static void StartScreenshot() { var monitorInfos = MonitorHelper.GetMonitorInfos(); var detector = new RectDetector(); detector.Snapshot(monitorInfos .Select(item => item.PhysicalScreenRect) .Aggregate((acc, item) => acc.Union(item))); var mouseEventSource = CreateMouseEventSource(); foreach (var monitorInfo in monitorInfos) { var vm = new MainWindowViewModel( mouseEventSource, CaptureScreen(monitorInfo.PhysicalScreenRect), monitorInfo, detector); var window = new MainWindow { DataContext = vm }; SetWindowRect(window, monitorInfo.PhysicalScreenRect); window.Loaded += WindowOnLoaded; window.Show(); vm.Initialize(); } }
public MonitorInfo(IntPtr handle, bool isPrimaryScreen, ReadOnlyRect workArea, ReadOnlyRect screenRect) { Handle = handle; IsPrimaryScreen = isPrimaryScreen; PhysicalWorkArea = workArea; PhysicalScreenRect = screenRect; (ScaleX, ScaleY) = MonitorHelper.GetScaleFactorFromMonitor(handle); var(x, y, width, height) = ToWpfAxis( screenRect.X, screenRect.Y, screenRect.Width, screenRect.Height); WpfAxisScreenRect = new Rect(x, y, width, height); }