msHOWTO

11 Nisan 2012 Çarşamba

C# GDI Giriş 1

Merhaba arkadaşlar.Bu makalemde sizlere GDI sınıfından bahsedeceğim.Nedir bu Gdi ? Gdi'a girmeden önce şunu belirtmekte fayda görüyorum.Düşünün bir form oluşturdunuz projenizde ve bu forma çeşitli nesneler eklediniz.PictureBox indan tutun GridView ına kadar her ne eklerseniz ekleyin formunuza aslında eklediğiniz her bir nesne formunuz üzerine çiziliyordur.Yani kısaca sizin gördüğünüz aslında bir resimdir.Formunuz da bu gördüğünüz resmin tuvalidir arkadaşlar.Hatta oluşturduğunuz form bile çizilerek oluşturulmaktadır.Ekranınızın görüntü frekanslarına göre ortalama saniyede 50 60 kez çiziliyor formunuz ve formunuz içerisindeki nesneler.

Bu ön bilgi ışığında tekrardan GDI a geçelim.Ne demiştik form dahi her nesne ekranda çiziliyor.İşte bizim de kendi çizimlerimizi, kendi grafiklerimizi , kendi resimlerimizi vs. çizmemiz için oluşturulmuş bir sınıftır.GDI ekran kartı üzerinde (GPU) değil işlemci (CPU) üzerinde işlemlerini yapmaktadır.Dolayısıyla çok fazla kullanılan bir sınıf değildir.Fakat bilmekte kesinlikle fayda vardır.

Peki neler yapabilirim ben GDI sınıfını kullanarak? Basit bir çizgiden tutun da grafiksel pasta dilimlerine , yazı çiziminden tutun da resim işlemeye kadar bir çok işlemleri kolaylıkla yapabilirsiniz.Adım adım örneklerle yapabileceklerinizi elimden geldiğince anlatmaya çalışacağım ...

Fakat arkadaşlar örneklere geçmeden önce çizim yapmak için bilmeniz gereken önemli konular var.Bunlardan bir tanesi formunuza (formunuz da dahil) herhangi bir nesne sürükleyip bıraktığınızda bu nesnenin bir location(konum) bilgisi vardır.X ve Y. Burdaki X nesnenin içinde bulunduğu formun X inden olan uzaklığıdır.Buna keza aynı şekilde Y bilgisi ise formun Y noktasından olan uzaklığıdır.Formunuzun X ve Y noktaları ise formunuzun ekranda bulunduğu X ve Y noktalarıdır.Ve unutulmaması gereken en önemli bilgi ise bu X ve Y noktaları gerek nesnelerin gerekse formun size göre sol üst uç noktası (0,0) olarak kabul edilip değer alır.


Önemli Not: Arkadaşlar burada yapacağımız işlem çizim olacağı için öncelikle çizim alanımızı yani kullanacağımız tuval i belirtmemiz gerekmektedir.Bunun sebebi de düşünün elinize çizim yapmanız için gerekli olan araçları aldınız.Çizime hazırsınız.İyi güzel de nereye çizim yapacaksınız.İşte aynı bu mantıktan yola çıkarak öncelikle çizim yapacağımız tuval imizi belirtiyoruz.


Graphics g = this.CreateGraphics();

 Şeklinde graphics sınıfını kullanarak çizim yapacağım tuvalimi oluşturmuş oldum ve ismie de g dedim.


Not : this kelimesi formumu işaret etmektedir.Ben tuval olarak formumu kullanıyorum arkadaşlar anlatacağım tüm örneklerimde.



Örnek 1 : Çizgi Çizmek


DrawLine komutu kullanılarak çizim yapılır.


Pen kalem = new Pen(Color.Blue, 2.0f);
g.DrawLine(kalem, 10, 10, 200, 10);

DrawLine komutunun benim kullandığım şeklinde benden istediği parametreler : (Pen,float x1,float y1,float x2, float y2) 

Şimdi burda istenilen X1 ve Y1 parametreleri çizgimin başlangıç koordinatı , X2 ve Y2 parametreleri de çizgimin bitiş koordinatlarıdır.

Örnek 2 : DikDörtgen Çizmek

DrawRectangle komutu kullanılır. İstediği parametreler (Pen,float x1,float y1,float x2, float y2) . Burada X1 ve Y1 parametreleri dikdörtgenin sol üst noktasının koordinatlarıdır.X2 ve Y2 parametreleri de sağ alt noktasının koordinatlarıdır.

g.DrawRectangle(new Pen(Color.Red, 2.0f), 30, 30, 300, 150);

Örnek 3 : Elips veya Daire Çizmek

DrawEllipse komutu kullanılır. İstediği parametreler (Pen,float x1,float y1,float x2, float y2) Burada mantık biraz farklıdır. Aslında yapılan sizden bir dikdörtgen alan belirlemenizdir.Daha sonrasında C# bu alanın içerisine daireyi veya elips i çizer.Kenarlara teğet olarak yerleştirir. Bu açıdan baktığımızda X1 ve Y1 dikdörtgenin sol üst noktasının koordinatları , X2 ve Y2 ise dikdörtgenin sağ alt noktasının koordinatlarıdır.

g.DrawEllipse(new Pen(Brushes.Aqua), 50, 50, 300, 200);


1 yorum: