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(); }
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; } }