コード例 #1
0
        void CloseClick(object Sender, RoutedEventArgs E)
        {
            SelectedScreen = null;
            SelectedWindow = null;

            BeginClose();
        }
コード例 #2
0
ファイル: WindowPicker.xaml.cs プロジェクト: hanfeijp/Captura
        void WindowMouseMove(object Sender, MouseEventArgs E)
        {
            var pos = E.GetPosition(this);

            var point = new Point((int)(pos.X * Dpi.X), (int)(pos.Y * Dpi.Y));

            var window = _windows
                         .Where(M => !_skipWindows.Contains(M.Handle))
                         .FirstOrDefault(M => M.Rectangle.Contains(point));

            if (window != null)
            {
                SelectedWindow = window;

                Cursor = Cursors.Hand;

                var rect = window.Rectangle;

                WindowBorder.Margin = new Thickness(rect.Left / Dpi.X, rect.Top / Dpi.Y, 0, 0);

                WindowBorder.Width  = rect.Width / Dpi.X;
                WindowBorder.Height = rect.Height / Dpi.Y;

                WindowBorder.Visibility = Visibility.Visible;
            }
            else
            {
                SelectedWindow = null;

                Cursor = Cursors.Arrow;

                WindowBorder.Visibility = Visibility.Collapsed;
            }
        }
コード例 #3
0
        public Bitmap ScreenShotWindow(Window hWnd)
        {
            _systemTray.HideNotification();

            if (hWnd == Window.DesktopWindow)
            {
                return(ScreenShot.Capture(Settings.IncludeCursor).Transform(Settings.ScreenShots));
            }

            var bmp = ScreenShot.CaptureTransparent(hWnd,
                                                    Settings.IncludeCursor,
                                                    Settings.ScreenShots.Resize,
                                                    Settings.ScreenShots.ResizeWidth,
                                                    Settings.ScreenShots.ResizeHeight);

            // Capture without Transparency
            if (bmp == null)
            {
                try
                {
                    return(ScreenShot.Capture(hWnd, Settings.IncludeCursor)?.Transform(Settings.ScreenShots));
                }
                catch
                {
                    return(null);
                }
            }

            return(bmp.Transform(Settings.ScreenShots, true));
        }
コード例 #4
0
        VideoSourcePickerWindow(VideoPickerMode Mode)
        {
            _mode = Mode;
            InitializeComponent();

            Left   = Top = 0;
            Width  = SystemParameters.VirtualScreenWidth;
            Height = SystemParameters.VirtualScreenHeight;

            UpdateBackground();

            _screens = Screen.AllScreens;
            _windows = Window.EnumerateVisible().ToArray();

            ShowCancelText();
        }
コード例 #5
0
ファイル: WindowPicker.xaml.cs プロジェクト: hanfeijp/Captura
        public WindowPicker(IEnumerable <IntPtr> SkipWindows)
        {
            _skipWindows = SkipWindows ?? new IntPtr[0];

            InitializeComponent();

            Left   = Top = 0;
            Width  = SystemParameters.VirtualScreenWidth;
            Height = SystemParameters.VirtualScreenHeight;

            UpdateBackground();

            ShowCancelText();

            _windows = Window.EnumerateVisible().ToArray();
        }
コード例 #6
0
        void WindowMouseMove(object Sender, MouseEventArgs E)
        {
            var pos = E.GetPosition(this);

            var point = new Point((int)(pos.X * Dpi.X), (int)(pos.Y * Dpi.Y));

            void UpdateBorderAndCursor(Rectangle?Rect)
            {
                if (Rect == null)
                {
                    Cursor = Cursors.Arrow;

                    Border.Visibility = Visibility.Collapsed;
                }
                else
                {
                    Cursor = Cursors.Hand;

                    var rect = Rect.Value;

                    Border.Margin = new Thickness(rect.Left / Dpi.X, rect.Top / Dpi.Y, 0, 0);

                    Border.Width  = rect.Width / Dpi.X;
                    Border.Height = rect.Height / Dpi.Y;

                    Border.Visibility = Visibility.Visible;
                }
            }

            switch (_mode)
            {
            case VideoPickerMode.Screen:
                SelectedScreen = _screens.FirstOrDefault(M => M.Bounds.Contains(point));

                UpdateBorderAndCursor(SelectedScreen?.Bounds);
                break;

            case VideoPickerMode.Window:
                SelectedWindow = _windows
                                 .Where(M => !SkipWindows.Contains(M.Handle))
                                 .FirstOrDefault(M => M.Rectangle.Contains(point));

                UpdateBorderAndCursor(SelectedWindow?.Rectangle);
                break;
            }
        }
コード例 #7
0
        public Bitmap ScreenShotWindow(Window hWnd)
        {
            if (hWnd == Window.DesktopWindow)
            {
                return(ScreenShot.Capture(Settings.IncludeCursor));
            }
            else
            {
                var bmp = ScreenShot.CaptureTransparent(hWnd, Settings.IncludeCursor,
                                                        Settings.ScreenShotDoResize, Settings.ScreenShotResizeWidth, Settings.ScreenShotResizeHeight);

                // Capture without Transparency
                if (bmp == null)
                {
                    bmp = ScreenShot.Capture(hWnd, Settings.IncludeCursor);
                }

                return(bmp);
            }
        }
コード例 #8
0
        void WindowMouseMove(object Sender, MouseEventArgs E)
        {
            var point = MouseCursor.CursorPosition;

            switch (_mode)
            {
            case VideoPickerMode.Screen:
                SelectedScreen = _screens.FirstOrDefault(M => M.Bounds.Contains(point));

                UpdateBorderAndCursor(SelectedScreen?.Bounds);
                break;

            case VideoPickerMode.Window:
                SelectedWindow = _windows
                                 .Where(M => Predicate?.Invoke(M) ?? true)
                                 .FirstOrDefault(M => M.Rectangle.Contains(point));

                UpdateBorderAndCursor(SelectedWindow?.Rectangle);
                break;
            }
        }
コード例 #9
0
ファイル: WindowPicker.xaml.cs プロジェクト: hanfeijp/Captura
        void CloseClick(object Sender, RoutedEventArgs E)
        {
            SelectedWindow = null;

            Close();
        }