示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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));
            }
        }
示例#3
0
 /// <summary>
 /// キャプチャのコア処理。
 /// </summary>
 /// <param name="target">キャプチャ対象</param>
 /// <returns>キャプチャ画像</returns>
 protected override Bitmap CaptureCore(Rectangle?target)
 {
     return(ScreenHelper.CaptureScreen(target.Value.ToPhysicalPixel(PerMonitorDpi.GetDpi(target.Value))));
 }
示例#4
0
 /// <summary>
 /// キャプチャのコア処理。
 /// </summary>
 /// <param name="target">キャプチャ対象</param>
 /// <returns>キャプチャ画像</returns>
 protected override Bitmap CaptureCore(Rectangle?target)
 {
     return(ScreenHelper.CaptureScreen(target.Value));
 }