Calender

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    
<< July 2018 >>

Categories

Archives

Recent Entries

Recent Comment

Recent Trackback

w closet×JUGEM

-

WPF スクリーンキャプチャ 仕事場での写経用

        private void CaptureStart()
        {
            // キャプチャ対象のXY座標を取得
            System.Windows.Point targetPoint = this.dgTarget.PointToScreen(new System.Windows.Point(0.0d, 0.0d));

            // キャプチャ領域の生成
            Rect targetRect = new Rect(targetPoint.X, targetPoint.Y, this.dgTarget.ActualWidth, this.dgTarget.ActualHeight);

            // 画面のキャプチャ
            BitmapSource bitmap = this.CaptureScreen(targetRect);

            // キャプチャしたビットマップをImageコントロールに設定
            this.imgResult.Source = bitmap;

            // ビットマップをPNGで保存
            using (Stream stream = new FileStream("result.png", FileMode.Create))
            {
                PngBitmapEncoder encoder = new PngBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(bitmap));
                encoder.Save(stream);
            }
        }

        private BitmapSource CaptureScreen(Rect rect)
        {
            // 引数rectの領域をキャプチャする
            using (var screenBmp = new Bitmap((int)rect.Width, (int)rect.Height,
                                              System.Drawing.Imaging.PixelFormat.Format32bppArgb))
            {
                using (var bmpGraphics = Graphics.FromImage(screenBmp))
                {
                    // キャプチャ結果をBitmapSourceで返す
                    bmpGraphics.CopyFromScreen((int)rect.X, (int)rect.Y, 0, 0, screenBmp.Size);
                    return Imaging.CreateBitmapSourceFromHBitmap(screenBmp.GetHbitmap(),
                                                                 IntPtr.Zero, Int32Rect.Empty,
                                                                 BitmapSizeOptions.FromEmptyOptions());
                }
            }
        }
 

  • 2018.06.29 Friday
  • 06:00

Comment
Send Comment








   
この記事のトラックバックURL
Trackback