1

画面のフォームでスクリーンショットを撮ろうとしていますが、フォームをスクリーンショットに含めたくありません。これは、スクリーンショットを取得するための私の現在のコードです。

Bitmap bt;
Graphics screenshot;
private void button1_Click_1(object sender, EventArgs e)
{
    this.Opacity = 0;
    bt = new Bitmap(Screen.FromControl(this).Bounds.Width, Screen.FromControl(this).Bounds.Height, PixelFormat.Format32bppArgb);
    screenshot = Graphics.FromImage(bt);
    screenshot.CopyFromScreen(Screen.FromControl(this).Bounds.X, Screen.FromControl(this).Bounds.Y, 0, 0, Screen.FromControl(this).Bounds.Size, CopyPixelOperation.SourceCopy);
    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
    pictureBox1.Image = bt;
    this.Opacity = 1;
}

これはある程度機能しますが、問題は、これを行うと毎回画面がちらつくことです。私のフォームを含まないようにする方法はありますか?

4

1 に答える 1

1

フォームの背後にあるもののスクリーンショットを撮ることはできませんが、フォームを非表示にしてスクリーンショットを撮り、フォームを再び表示することはできます。これを行う方法:

  1. フォームを非表示にする
  2. 画面が再描画されるまでしばらく待ちます。
  3. スクリーンショットを撮ります。
  4. フォームを表示します。

Timer クラスを使用して 2 を非同期にする必要があります。

あなたの仕事を頑張ってください。

于 2013-05-24T17:09:12.127 に答える