C# Ekran Görüntüsü Almak (ScreenShot) – Çalışan Örnekli

C# Ekran Görüntüsü Almak (ScreenShot) – Çalışan Örnekli

20 Haziran 2018 0 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 679
Yaklaşık okuma süresi : 6 DK
C# ColorDialog Kullanımı
C# MdiForm İşlemleri ve Panel İçinde Form Açmak

C# Ekran Görüntüsü Almak (ScreenShot) – Çalışan Örnekli , yazımızda c sharp ile ekran görüntüsü nasıl alırız onu göreceğiz. Bu işlemi yapacak bir sürü program var elbet ancak bazen proje içerisinde gerek olabilmektedir. Mesela bir keresinde onaylama ekranında her onayda otomatik ekran görüntüsü almak zorunda kalmıştım. Bu ve bunun gibi işlemler için gerekli olabiliyor. Yada isterseniz ekranda hiçbir şey olmadan, arka planda çalışan bir ekran görüntüsü alma aracı da yapabilirsiniz. Program arka planda çalışır bir tuş kombinasyonu ile otomatik ekran görüntüsü alır kaydedersiniz. Bu dersimizde de bunu anlatacağım.  Direk kodları vermeyi düşünüyordum ama bu derse özel proje dosyalarını da paylaşacağım. 😀 Kodları da vereceğim dersin sonunda projeyi dosyalarını da vereceğim. Hadi gelin C Sharp Ekran Görüntüsü Almak – (ScreenShot) – Çalışan Örnekli dersimize geçelim.

 

C Sharp Ekran Görüntüsü Almak – (ScreenShot) – Çalışan Örnekli

Yapacağımız uygulama şöyle olacak;

Advertisements

Bir form olacak ve W166 x H90 ölçülerinde olacak. (W min 166 oluyor.) Bu formun özellikler sayfasında geliyoruz ve KeyPreview özelliğini true ve  ControlBox özelliğini de false yapıyoruz.

KeyPreview Klavye kısayol kombinasyonu için bu özelliği açıyoruz.

ControlBox From’un sağ üst kısmındaki Minimize, Maksimize ve Kapatma butonlarını kaldırır.

Ben kısayol tuşunu Home Tuşu olarak belirledim. O yüzden Formun başlığına yani Text özelliğine de Home Tuşu SS Alır yazdım.

Formumuza iki buton ekliyoruz ve birine SS Al diğerine de Kapat yazıyoruz. Butonların fontlarını Bold yapıyoruz. SS Al butonun Dock özelliğini Right, Kapat butonunun Dock özelliğini de Fill yapıyoruz.

İlgili İçerik  C# Mod Alma İşlemi

Sonunda şöyle bir görüntü elde edeceğiz.

c sharp ekran görüntüsü almak

Formumuzun kod kısmına geliyoruz ve aşağıdaki namespace’leri yazıyoruz.

using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

Ekran görüntüsünü alan kodlarımız.

 private Bitmap Screenshot()
        {
            // Ekran resmi alınmadan önce formun kaybolmasını sağlıyoruz.
            this.Opacity = 0; 
            
            // SS alan kodlar
            Bitmap Screenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            Graphics GFX = Graphics.FromImage(Screenshot);
            GFX.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size);
            // SS alan kodlar

            this.Opacity = 1;
            // Ekran resmi alınmadan önce formun görünmesini sağlıyoruz.
            return Screenshot;
            // Ekran resmini geri dönüş yapıyoruz.
        }

Aldığımız ekran görüntüsüne bir isim verip kaydediyoruz.

 string KayitYolu = @"C:\Ekran_Resimleri";
        string ResimAdi()
        {
            return "SS_" + DateTime.Now.ToString().Replace(" ", "_").Replace(":", "_") + ".jpg";
            // Örnek Resim Adı : SS_19.06.2018_12_48_50.jpg 
            // Saniyeye kadar aldıkki resim adları çakışmasın. Çakışma olması durumda eskiyi siler. Üzerine yazar.
        }
        void Kaydet(string resimadi)
        {
            // C dizinine bir klasör açıyoruz. 
            // Klasör varsa hiçbir işlem yapmayacak
            // Klasör yoksa klasör oluşturacak.
            if (!File.Exists(KayitYolu))
                Directory.CreateDirectory(KayitYolu);

            // Aldığımız resmi kayıt ediyoruz.
            Screenshot().Save(KayitYolu + "\\" + resimadi + "", ImageFormat.Jpeg);
        }

Form’un keydown eventine gelelim ve Home Tuşuna basıldığında ekran görüntüsü almasını sağlayalım.

 private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Home)
                Kaydet(ResimAdi());
        }

SS Al butonu ve Kapat butonu click eventlerini yazalım.

 private void button1_Click(object sender, EventArgs e)
        {
            Kaydet(ResimAdi());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

Bu şekilde ekran görüntüsü alan bir uygulama yapmış oluyoruz. 😀

NOT: Bu şekilde aldığımız ekran görüntüsü başlat çubuğu almamaktadır. Yani alınan ekran görüntüsünde başlat çubuğu yoktur.

Ayrıca tıklayarak GitHub üzerinden de erişim sağlayabilirsiniz.


C Sharp Ekran Görüntüsü Almak – (ScreenShot) – Çalışan Örnekli dersimizde bu kadar dostlar.

Çok samimi bir şekilde söylüyorum ki, bu proje çok hoşuma gitti. Sürekli kullanacağım programlar arasında yerini aldı 😀 😀

İlgili İçerik  C# E-Mail Kontrolü - Net.Mail Sınıfı

C Sharp Eğitim Seti ve ERP Programlama eğitimi sayfasına gitmek için tıklayınız.

Sağlıcakla ve takipte kalın. 😉

C# ColorDialog Kullanımı
C# MdiForm İşlemleri ve Panel İçinde Form Açmak