/// <summary> /// コントロールをキャプチャする /// </summary> /// <param name="handle">ウィンドウハンドル</param> /// <param name="g">描画サーフェイス</param> /// <param name="client">クライアント領域</param> /// <param name="scrollPoint">スクロール座標</param> /// <param name="startScroll">開始スクロール座標</param> /// <param name="dpi">DPI情報</param> /// <param name="fixHeaderHeight">固定ヘッダーの高さ</param> private void CaptureControl(IntPtr handle, Graphics g, ref Rectangle client, ref Point scrollPoint, ref Point scrollStart, Dpi dpi, int fixHeaderHeight = 0) { // ウィンドウをキャプチャする using (Bitmap bitmap = ScreenHelper.CaptureScreen(handle)) { // 描画元領域の設定 Rectangle srcRect = client.ToPhysicalPixel(dpi); // 描画先領域の設定 Rectangle destRect = new Rectangle( scrollPoint.X - scrollStart.X, scrollPoint.Y - scrollStart.Y + fixHeaderHeight, client.Width, client.Height ).ToPhysicalPixel(dpi); // キャプチャした画像を書き込む g.DrawImage(bitmap, destRect, srcRect, GraphicsUnit.Pixel); } }
/// <summary> /// キャプチャのコア処理。 /// </summary> /// <param name="target">キャプチャ対象</param> /// <returns>キャプチャ画像</returns> protected override Bitmap CaptureCore(IntPtr?target) { var handle = target.Value; // IE判定 var className = InteropHelper.GetClassName(handle); if (className == ClassNameIe) { // ウェブページ全体をキャプチャ return(InternetExplorerCapture(handle)); } else { // 選択コントロールをキャプチャ return(ScreenHelper.CaptureScreen(handle)); } }
/// <summary> /// キャプチャのコア処理。 /// </summary> /// <param name="target">キャプチャ対象</param> /// <returns>キャプチャ画像</returns> protected override Bitmap CaptureCore(Rectangle?target) { return(ScreenHelper.CaptureScreen(target.Value.ToPhysicalPixel(PerMonitorDpi.GetDpi(target.Value)))); }
/// <summary> /// キャプチャのコア処理。 /// </summary> /// <param name="target">キャプチャ対象</param> /// <returns>キャプチャ画像</returns> protected override Bitmap CaptureCore(Rectangle?target) { return(ScreenHelper.CaptureScreen(target.Value)); }