C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 画面のハードコピー


(過去ログ 166 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■95720 / inTopicNo.1)  画面のハードコピー
  
□投稿者/ スポット参戦 (1回)-(2020/09/09(Wed) 10:19:28)

分類:[C#] 

Windows 10 で、画面(フォーム)をハードコピーするプログラムを、DrawToBitmap() で行うと、画面が、Windows 7 になってしまいます。
また、画面を最大化してハードコピーした時にも、余分な枠が入っています。
解決策ありますか?

引用返信 編集キー/
■95721 / inTopicNo.2)  Re[1]: 画面のハードコピー
□投稿者/ 魔界の仮面弁士 (2830回)-(2020/09/09(Wed) 10:22:12)
No95720 (スポット参戦 さん) に返信
> Windows 10 で、画面(フォーム)をハードコピーするプログラムを、
> DrawToBitmap() で行うと、画面が、Windows 7 になってしまいます。

目的にもよりますが、DrawToBitmap メソッドのかわりに、
Graphics.CopyFromScreen メソッドを使えないでしょうか。
https://dobon.net/vb/dotnet/graphics/screencapture.html#section2
引用返信 編集キー/
■95723 / inTopicNo.3)  Re[2]: 画面のハードコピー
□投稿者/ スポット参戦 (2回)-(2020/09/09(Wed) 11:57:46)
No95721 (魔界の仮面弁士 さん) に返信
Graphics.CopyFromScreen メソッドで Windows 7 の問題は解決しました。
ありがとうございます。

ただ、画面の上下左右に余分な枠が入ってしまいます。
これを無くしたいです。
引用返信 編集キー/
■95724 / inTopicNo.4)  Re[3]: 画面のハードコピー
□投稿者/ スポット参戦 (3回)-(2020/09/09(Wed) 12:07:07)
No95721 (魔界の仮面弁士 さん) に返信
問題がありました。
Graphics.CopyFromScreen メソッドは、
画面がスクリーンからはみ出ている時に、はみ出た部分のキャプチャができませんでした。
引用返信 編集キー/
■95727 / inTopicNo.5)  Re[4]: 画面のハードコピー
□投稿者/ スポット参戦 (4回)-(2020/09/09(Wed) 17:19:27)
画面がスクリーンからはみ出ている時に、はみ出た部分のキャプチャができない問題は残っていますが、
画面の上下左右に余分な枠が入ってしまう問題は、自己解決したので報告です。

//定義
[StructLayout(LayoutKind.Sequential)]
private struct Rect
{
public int left;
public int top;
public int right;
public int bottom;
}

private const int DWMWA_EXTENDED_FRAME_BOUNDS = 9;

[DllImport("dwmapi.dll")]
extern static int DwmGetWindowAttribute(IntPtr hWnd, int dwAttribute, out Rect rect, int cbAttribute);

//ウィンドウ・ハンドルを取得する
IntPtr hWnd = this.Handle;
//外見上のウィンドウサイズを取得する
Rect bounds;
DwmGetWindowAttribute(hWnd, DWMWA_EXTENDED_FRAME_BOUNDS, out bounds, Marshal.SizeOf(typeof(Rect)));
//Bitmapの作成
Bitmap bmp = new Bitmap(bounds.right - bounds.left, bounds.bottom - bounds.top);
//Graphicsの作成
Graphics g = Graphics.FromImage(bmp);
//画面をコピーする
g.CopyFromScreen(bounds.left, bounds.top, 0, 0, bmp.Size);
//解放
g.Dispose();
//表示
PictureBox1.Image = bmp;

引用返信 編集キー/
■95751 / inTopicNo.6)  Re[5]: 画面のハードコピー
□投稿者/ スポット参戦 (5回)-(2020/09/16(Wed) 18:20:39)
魔界の仮面弁士さん
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -