ScreenShot Alarak Ekran Kaydetme

Görüntülü eğitim (video) çekerken ekran görüntüsü kaydetme mantığını düşünerek ufak bir modül yazıp bunu sizlerle paylaşmak istedim. Üzerinde kısa bir süre durduğum için tabi ki eksikleri çok. Amacım bu mantıktan yola çıkarak daha büyük projeler yazmanıza olanak sağlamak. Ama yine de güzel bir sonuç aldığımı söyleyebilirim.

Proje Sonunda Aşağıdaki gibi bir sonuç elde edeceğiz.

screenshot-alarak-ekran-kaydetme-1

screenshot-alarak-ekran-kaydetme-1

Şimdi işe koyulalım.

Adım 1: C sürücüsünde ekran isimli bir klasör oluşturunuz.

Adım 2: Yeni bir Windows Form Application Açınız.

Adım 3: Formunuza yukarıdaki gibi 3 Button 1 PictureBox ekleyiniz.

Adım 4: Ayrıca formunuza 2 adet Timer Kontrolü Ekleyiniz.

Adım 5: Using satırına using System.Drawing.Imaging; ekleyiniz.

Adım 6: İlgili eventlere aşağıdaki kodları ekleyiniz.

//Kayıt Başla butonuna tıklanınca Timer1 nesnesi aktifleştiriliyor.

private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
timer1.Interval = 50;
}

//Timer1 nesnesi aktifleşince saniyenin her 1/20 lik diliminde ekran resmini çekip C sürücüsünde daha önce açtığınız ekran isimli klasöre kopyalıyor.

int resimNo;
private void timer1_Tick(object sender, EventArgs e)
{
Bitmap ekran = new Bitmap(1024, 768, PixelFormat.Format24bppRgb);
Rectangle ekranParcasi = Screen.AllScreens[0].Bounds;
Graphics grafik = Graphics.FromImage(ekran);
grafik.CopyFromScreen(ekranParcasi.Left, ekranParcasi.Top, 0, 0, ekranParcasi.Size);
ekran.Save(@”c:\ekran\resim” + resimNo + “.jpg”, ImageFormat.Jpeg);
resimNo++;
}

//Kayıt Durdur butonuna tıklayınca timer1 nesnesi durduruluyor.

private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}

//Ekranı Oynat butonuna tıklayınca ekranı oynatması için Timer2 nesnesi aktifleştiriliyor.

private void button3_Click(object sender, EventArgs e)
{
timer2.Enabled = true;
timer2.Interval = 50;
}

//Timer2 nesnesi sayesinde 1 saniye içinde 20 resim ardarda gösterilerek çizgi film mantığı ile ekran görüntüsü izlenimi sağlanıyor.

int resimNo2;
private void timer2_Tick(object sender, EventArgs e)
{
try
{
pictureBox1.Image = Image.FromFile(@”c:\ekran\resim” + resimNo2 + “.jpg”);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
resimNo2++;
}
catch
{
timer2.Enabled = false;
MessageBox.Show(“Bitti…”);
}
}

İşte bu kadar. Çalıştırıp deneyebilirsiniz.

Makale başında da dediğim gibi bunu sizinle paylaşmak amaçlı yazdım. Siz isteğinize uygun geliştirebilirsiniz.

Diğer yazılarımda görüşmek üzere…