Screen Capture  - C#

Geçen gün programcılık konulu bir sitenin formunda C#'ta ekran görünütüsü alma ile ilgili soru vardı. Hemen C# kitabımdan aşağıda verdiğim kodu formuma aktardım.

[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr Ptr1, IntPtr Ptr2, uint Sayi);

private void Kaydet_Click(object sender, EventArgs e) {
Bitmap Resim = new Bitmap(1024, 768);
Graphics g = Graphics.FromImage(Resim);
IntPtr Nesne = g.GetHdc();
PrintWindow(this.Handle, Nesne, 0);
g.ReleaseHdc(Nesne);
Resim.Save("C:\form.bmp");
}

PrintWindow adlı Api fonksiyonun kullanıldığı bu kod aktif pencerenin veya C# uygulamasına ait pencerenin fotoğrafını çekip BMP dosyası olarak kaydediyor. Ne ki soruyu soran arkadaşa bu kod çare olamadı. Çünkü sonradan ekranın tümünün fotoğrafını çekmek istediğini söyledi. Sanırım hocası öyle bir ödev vermiş. Bu kez kendisi için aşağıda verdiğim kodu yazdım.

private void Kaydet_Click(object sender, EventArgs e)
{
Size Boyut = new Size(1024, 768);
Bitmap Resim = new Bitmap(1024, 768);
System.Drawing.Graphics grafik = System.Drawing.Graphics.FromImage(Resim);
grafik.CopyFromScreen(new Point(0, 0), new Point(0, 0), Boyut);
Resim.Save("C:\Test.bmp");
}