2

私は自分のアプリケーションをセカンド モニターで使用し、場合によってはコンピューターのプライマリ モニターで使用します。

2 台目のモニターのスクリーンショットを取得するにはどうすればよいですか?

次のコードは、2 番目のモニターでは機能しません...

Graphics gfx;
Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
gfx = Graphics.FromImage(bmp);
gfx.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);

MemoryStream ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Jpeg);
byte[] bitmapData = ms.ToArray();
4

2 に答える 2

3

Screen.AllScreens[1].Boundsの代わりに使用しScreen.PrimaryScreen.Boundsます。

または、プライマリ以外の最初のスクリーンを取得する方が信頼性が高くなります。

var secondScreen = Screen.AllScreens.Where(screen => !screen.Primary).FirstOrDefault();

secondScreen == nullsecondScreen があるかどうかを確認してください。

編集:アプリケーションが現在実行されている画面を提供すること
にも興味があるかもしれません。Screen.FromControl

于 2012-04-12T20:32:56.627 に答える