ravex
Ultra Member
Bunu programla yapmaya ne gerek var print screen tuşu ile zaten ekran görüntüsünü kaydedebiliyoruz diyebilirsiniz ? haklısınız da, C# ile ekran görüntüsü alarak direk bir dosya olarak istediğimiz formatta kaydedebiliriz png,bmp,jpg bunun için ek bir programa gerek yok. Bu işlemi yapabilmek için Aşağıdaki gibi bir form tasarlıyacağız.. Form üzerine bir buton ekliyoruz daha sonrada saveFileDialog nesnesi ekliyoruz. ..
saveFileDialog nesnesinin Filter özelliğini “BMP|*.bmp|PNG|*.png|JPEG|*.jpg” yazıyoruz bunlar kaydedebileceğimiz resim uzantıları.
Daha sonra kod bölümüne geçip
kütüphanelerini çalışmamıza ekiyoruz ve sonra aldığımız görüntüyü kayıt edebilmek için
değişkenlerini buton click olayının hemen üstüne tanımladıktan sonra buton clik olayının içine
saveFileDialog nesnesinin Filter özelliğini “BMP|*.bmp|PNG|*.png|JPEG|*.jpg” yazıyoruz bunlar kaydedebileceğimiz resim uzantıları.
Daha sonra kod bölümüne geçip
C#:
using System.Drawing.Imaging;
using System.Threading;
C#:
ImageFormat img; Bitmap bt; Graphics screenShot;
C#:
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{ //Formu gizledik
this.Hide();
// Ekran görüntüsünü almak için Formu 500 milisaniye gizliyoruz
Thread.Sleep(500);
//Ekran boyutuna göre görüntü ayarladık
bt = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
// Görüntü (bt) için grafik nesnesi oluşturur.
screenShot = Graphics.FromImage(bt);
// Ekran görüntüsünü alır.
screenShot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size,CopyPixelOperation.SourceCopy);
switch (saveFileDialog1.FilterIndex)
{
case 0: img = ImageFormat.Bmp; break;
case 1: img = ImageFormat.Png; break;
case 2: img = ImageFormat.Jpeg; break;
}
// Görüntüyü kaydeder.
bt.Save(saveFileDialog1.FileName, img);
// Dosyayı kaydettikten sonra Formu tekrar gösteriyoruz.
this.Show();
}