/// <summary> /// ドラッグで選択された範囲のスクリーンショットを撮ってウィンドウに表示 /// trimmedBitmapに保存用の画像を生成 /// </summary> private void beginTakeSnapshot() { var window = new CaptureDragWindow(); window.ReceiveDragAsync(resultRect => { if (resultRect.Width < 10 || resultRect.Height < 10) { return; } using (var screenBitmap = new System.Drawing.Bitmap((int)resultRect.Width, (int)resultRect.Height)) { // ドラッグされた範囲のスクリーンショットを撮影 using (var g = Graphics.FromImage(screenBitmap)) { g.CopyFromScreen((int)resultRect.Left, (int)resultRect.Top, 0, 0, screenBitmap.Size, System.Drawing.CopyPixelOperation.SourceCopy); } // 画像を表示 var hBitmap = screenBitmap.GetHbitmap(); image.Source = Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); image.Width = screenBitmap.Width; image.Height = screenBitmap.Height; image.Visibility = Visibility.Visible; // トリミングされる範囲を表示 var trimRect = measureTrimmingRect(screenBitmap); trimRectangle.Margin = new Thickness(trimRect.Left - 1, trimRect.Top - 1, screenBitmap.Width - trimRect.Right, screenBitmap.Height - trimRect.Bottom); trimRectangle.Visibility = Visibility.Visible; // 保存用のトリミングされたBitmapを用意 if (trimmedBitmap != null) { trimmedBitmap.Dispose(); } trimmedBitmap = new System.Drawing.Bitmap(trimRect.Width, trimRect.Height, screenBitmap.PixelFormat); using (var g = Graphics.FromImage(trimmedBitmap)) { g.DrawImage(screenBitmap, 0, 0, trimRect, GraphicsUnit.Pixel); } } }); }
/// <summary> /// ドラッグで選択された範囲のスクリーンショットを撮ってウィンドウに表示 /// trimmedBitmapに保存用の画像を生成 /// </summary> private void beginTakeSnapshot() { var window = new CaptureDragWindow(); window.ReceiveDragAsync(resultRect => { if (resultRect.Width < 10 || resultRect.Height < 10) return; using (var screenBitmap = new System.Drawing.Bitmap((int)resultRect.Width, (int)resultRect.Height)) { // ドラッグされた範囲のスクリーンショットを撮影 using (var g = Graphics.FromImage(screenBitmap)) { g.CopyFromScreen((int)resultRect.Left, (int)resultRect.Top, 0, 0, screenBitmap.Size, System.Drawing.CopyPixelOperation.SourceCopy); } // 画像を表示 var hBitmap = screenBitmap.GetHbitmap(); image.Source = Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); image.Width = screenBitmap.Width; image.Height = screenBitmap.Height; image.Visibility = Visibility.Visible; // トリミングされる範囲を表示 var trimRect = measureTrimmingRect(screenBitmap); trimRectangle.Margin = new Thickness(trimRect.Left - 1, trimRect.Top - 1, screenBitmap.Width - trimRect.Right, screenBitmap.Height - trimRect.Bottom); trimRectangle.Visibility = Visibility.Visible; // 保存用のトリミングされたBitmapを用意 if (trimmedBitmap != null) trimmedBitmap.Dispose(); trimmedBitmap = new System.Drawing.Bitmap(trimRect.Width, trimRect.Height, screenBitmap.PixelFormat); using (var g = Graphics.FromImage(trimmedBitmap)) { g.DrawImage(screenBitmap, 0, 0, trimRect, GraphicsUnit.Pixel); } } }); }