Makale Özeti

Yine içerisinde sürpriz konu barındıran bir makaleyle C# 3.0’a devam ediyorum.

Makale

C# 3.0 PictureBox’da PhysicalDimension, PixelFormat ve FrameDimension Özellikleri

Yine içerisinde sürpriz konu barındıran bir makaleyle C# 3.0’a devam ediyorum.

Bu makalemde amacım PictureBox’a koyduğumuz bir resmin özelliklerini edinmek. Makalenin ilerleyen paragraflarında çok farklı ve işe yarar bir konudan daha bahsedeceğim.

Öncelikle Windows formumuza bir picturebox, 5 label ve 5 textbox ekliyorum. Görüntü aşağıdaki gibi olmalıdır:

pb1.jpg

Çok sevdiğim bir kitabın kapağını resim olarak ekledim PictureBox’ıma. Şimdi gelelim kodlara. Formumuzun load özelliği dahilinde aşağıdaki kodları yazıyorum;

private void Form1_Load(object sender, EventArgs e)

{

float genislik = pictureBox1.Image.PhysicalDimension.Width;

float yukseklik = pictureBox1.Image.PhysicalDimension.Height;

textBox1.Text = genislik.ToString();

textBox2.Text = yukseklik.ToString();

string piksel_sayi = pictureBox1.Image.PixelFormat.ToString();

textBox3.Text = piksel_sayi.ToString();

System.Drawing.Image resim;

resim = pictureBox1.Image;

textBox4.Text = resim.HorizontalResolution.ToString();

textBox5.Text = resim.VerticalResolution.ToString();

}

 

İlk ve ikinci textboxa, Picturebox’ın barındırdığı resmin genişliğini ve yüksekliğini yazdırdım. Sonrasında PixelFormat özelliğinden yararlanarak üçüncü textboxa resmin renk sayısını yazdırdım. Son olarak ise System.Drawing sınıfından yararlanarak resmin yatay ve dikey çözünürlüklerini yazdırdım. Böylece picturebox’a atanan bir resmin detaylarını görebileceğiniz bir form oluşturmuş olduk.

Şimdi gelelim sürpriz konuya J

Bir Windows formuna yine picturebox ve bir textbox ekliyoruz. Bu sefer sabit bir resimle değil, hareketli bir .gif resmiyle ilgileneceğiz. Bildiğiniz gibi .gif resimleri birden çok kareden oluşturuluyor. Mesela dalgalanan bir Türk bayrağını düşünün. Kaç kareden oluştuğunu bulmak için yine formun load eventine aşağıdaki kodları yazıyoruz;


System.Drawing.Image resimresim = pictureBox1.Image;

System.Guid[] Anahtar;

Anahtar = resim.FrameDimensionsList;

System.Drawing.Imaging.FrameDimension boyut;

boyut = new System.Drawing.Imaging.FrameDimension(Anahtar[0]);

textBox6.Text = resim.GetFrameCount(boyut).ToString();


Bu kodla çalışma anında PictureBox’a atanan bir .gif resminin kaç kareden oluştuğunu öğrenebiliyoruz.

Kodda öncelikle resimresim adında bir değişken oluşturdum ve pictureboxdaki resmimi bu değişkene atadım. Daha sonra System.Guid sınıfından yararlanarak benzersiz bir anahtar oluşturdum ve Image sınıfının FrameDimensionList özelliğinin içeriğini bu anahtara aktardım. Resimde kaç kare olduğunu GetFrameCount() metodu ile öğrendim. Picturebox’a eklediğiniz resmin kaç kare olduğunu formunuzu çalıştırdığınızda textboxa yazıldığında öğreneceksiniz.


Umarım farklı bir konu üzerinde durmuşumdur. Farklı makalelerde tekrar görüşmek üzere, iyi çalışmalar.


Yağız Gönüler
yagizgonuler@gmail.com


Kaynaklar:

http://msdn.microsoft.com/en-us/library/system.drawing.image.physicaldimension.aspx

http://msdn.microsoft.com/en-us/library/system.drawing.image.pixelformat.aspx

http://msdn.microsoft.com/en-us/library/system.drawing.image.horizontalresolution.aspx

http://msdn.microsoft.com/en-us/library/system.drawing.image.verticalresolution.aspx

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.framedimension.aspx

Memik Yanık – Visual Studio 2008 ile Visual C# 3.0 For .Net Framework 3.5