Esempio n. 1
0
        private void captureByCanvasRect()
        {
            canvas.Children.Remove(rect);

            var dpi = ScreenUtil.GetDPI();
            var res = ScreenUtil.GetScreenResolution();

            // Capture
            Hide();
            var cap = ImageUtil.CaptureScreenshot(
                (int)(Canvas.GetLeft(rect) * dpi.X + Left),
                (int)(Canvas.GetTop(rect) * dpi.Y + Top),
                (int)(rect.Width * dpi.X + Left / dpi.X),
                (int)(rect.Height * dpi.Y + Top / dpi.Y)
                );

            Show();
            playShutterSound();

            switch (this.saveType)
            {
            case SaveType.DISK:
                cap.Save(DiskUtil.GenerateDiskFilePath(), ImageFormat.Png);
                break;

            case SaveType.CLIPBOARD:
                Clipboard.SetImage(ImageUtil.ConvertBitmapToBitmapSource(cap));
                break;
            }

            rect = null;
            Close();
        }
Esempio n. 2
0
        public CaptureWindow(CaptureType captureType, SaveType saveType = SaveType.DISK)
        {
            InitializeComponent();

            this.captureType = captureType;
            this.saveType    = saveType;

            switch (captureType)
            {
            case CaptureType.FULLSCREEN:
                var screenRes = ScreenUtil.GetScreenResolution();

                Hide();
                var cap = ImageUtil.CaptureScreenshot(0, 0, (int)screenRes.Width, (int)screenRes.Height);
                Show();
                playShutterSound();

                switch (saveType)
                {
                case SaveType.DISK:
                    cap.Save(DiskUtil.GenerateDiskFilePath(), ImageFormat.Png);
                    break;

                case SaveType.CLIPBOARD:
                    Clipboard.SetImage(ImageUtil.ConvertBitmapToBitmapSource(cap));
                    break;
                }

                Close();
                break;

            case CaptureType.REGION:
                Cursor = Cursors.Cross;
                break;

            case CaptureType.WINDOW:
                Cursor cameraCursor = new Cursor(
                    Application.GetResourceStream(new Uri("Images/camera.cur", UriKind.Relative)).Stream
                    );
                Cursor = cameraCursor;
                break;
            }
        }