C# Ekran Görüntüsünü Alıp Kaydetme
Daha fazla bilgi için : www.gorselprogramlama.com
Form uygulamamızda çalışırken ekran görüntüsü nasıl alınır onu öğrenelim. İlk olarak form arayüzümüze bir adet PictureBox(pcSs) iki adet Button(btnKaydet, btnResimCek) ve bir adet Timer(tmr) ekleyelim. Ayrıca kullanmamız gereken bazı kütüphaneler var. Onlarda şunlar:
using System.IO;//Giriş-Çıkış işlemlerimiz için kullanacağız.
using System.Drawing.Imaging;//Resimlerimizi verimli kullanabilmemiz için gerekli kütüphane.
Şimdi ekranın resmini çekmemiz için gerekli kodlamaları yapalım. “Screen Shot Al” butonuna basıp _Click olayına gelelim:
[code language=”csharp”]
private void btnResimCek_Click(object sender, EventArgs e)
{
tmr.Start();//Timer’ımızı başlattık.Özelliklerini aşağıda yazacağız.
this.WindowState = FormWindowState.Minimized;//Form Ekranını küçültelim.
System.Threading.Thread.Sleep(1000);//Programımızı bir saniyeliğine durduralım.
SendKeys.Send("{PRTSC}");//Uygulamayı PrintScreen tuşuna bastıralım
Image myimage = Clipboard.GetImage();//Çekilen Görüntüyü GetImage() yardımıyla ‘myimage’ taşıyalım
pcSs.Image = myimage;//taşıdığımız fotoğrafımızı ise programdaki resim kutumuza atalım.
this.WindowState = FormWindowState.Normal;//Ardından form ekranını normal boyuta getirelim.
}
[/code]
tmr adlı Timer’ımızı başlattık. Özelliklerini yazmamız için ilk önce Form1_Load olayına gelelim:
[code language=”csharp”]
private void Form1_Load(object sender, EventArgs e)
{
tmr.Interval = 1000;//Saniyede bir kere tmr_Tick olayını çalıştırır.
}
private void tmr_Tick(object sender, EventArgs e)
{
if (pcSs.Visible==true)//Eğer pcSs görünür ise
{
pcSs.Visible = false;//Görünürlüğü kapat.
}
else//Eğer pcSs görünür değil ise
{
pcSs.Visible = true;//Görünürlüğü aç.
}
}
[/code]
Burada ise pcSs adlı pictureBox‘ımızı bir saniye açıp bir saniye kapalı göstermek için “Visible” özelliğini kullandık. Şimdi de çektiğimiz görüntüyü kaydetmek için btnKaydet adlı butona tıklayıp _Click olayına gerekli kodları yazıyoruz:
[code language=”csharp”]
private void btnKydet_Click(object sender, EventArgs e)
{
Directory.CreateDirectory("C:\\Users\\****\\Desktop\\ekranKaydet");//Masa üstüne Klasör oluşturduk.
pcSs.Image.Save("C:\\Users\\onder\\Desktop\\ekranKaydet\\ekranKaydet.jpg",ImageFormat.Jpeg);/* Görüntümüzü oluşturduğumuz klasöre jpg formatında kaydettik.*/
}
[/code]
[code language=”csharp”]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnResimCek_Click(object sender, EventArgs e)
{
tmr.Start();
this.WindowState = FormWindowState.Minimized;//Form Ekranını küçültelim.
System.Threading.Thread.Sleep(1000);//Programımızı bir saniyeliğine durduralım.
SendKeys.Send("{PRTSC}");//Uygulamayı PrintScreen tuşuna bastıralım
Image myimage = Clipboard.GetImage();//Çekilen Görüntüyü GetImage() yardımıyla ‘myimage’ taşıyalım
pcSs.Image = myimage;//taşıdığımız fotoğrafımızı ise programdaki resim kutumuza atalım.
this.WindowState = FormWindowState.Normal;//Ardından form ekranını normal boyuta getirelim.
}
private void Form1_Load(object sender, EventArgs e)
{
tmr.Interval = 1000;//Saniyede bir kere tmr_Tick olayını çalıştırır.
}
private void tmr_Tick(object sender, EventArgs e)
{
if (pcSs.Visible==true)//Eğer pcSs görünür ise
{
pcSs.Visible = false;//Görünürlüğü kapat.
}
else//Eğer pcSs görünür değil ise
{
pcSs.Visible = true;//Görünürlüğü aç.
}
}
private void btnKydet_Click(object sender, EventArgs e)
{
Directory.CreateDirectory("C:\\Users\\onder\\Desktop\\ekranKaydet");
pcSs.Image.Save("C:\\Users\\onder\\Desktop\\ekranKaydet\\ekranKaydet.jpg",ImageFormat.Jpeg);
}
}
}
//Daha fazlası için www.gorselprogramlama.com
[/code]


peki hocam klasörü açıp kaydediyor güzel ama ben 1 den fazla ekran çektim hepsini ekranKaydet1.jpg olarak kaydetmiş bunu ekranKaydet2.jpg , ekranKaydet3.jpg diye nasıl çoğaltırız?
Global olarak değişken tanımlanır.her tıklamada değişken bir artırılır.
sayac++;
pcSs.Image.Save(“C:\\Users\\onder\\Desktop\\ekranKaydet\\ekranKaydet”+sayac+”.jpg”,ImageFormat.Jpeg);