Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
        }