msHOWTO

11 Nisan 2012 Çarşamba

C# GDI Kullanımı 3 Açılı Çizim Yapmak

Merhaba arkadaşlar.Bundan önceki GDI ile ilgili makalelerimde size elimden geldiğince GDI sınıfını ve mantığını anlatmaya çalıştım.Fakat o makalelerimde verdiğim örnekler ve sizlere anlattığım bilgilerle ancak ve ancak tek düze çizimler yapabiliyorduk.Fakat bu makalemde sizlere yapacağınız çizimleri dilediğiniz açıda nasıl çizebileceğinizi anlatacağım.Umarım faydalı olur ...

Eğer açılı çizim yapmak istiyorsanız uymanız gereken bir takım kurallar vardır.
-Öncelikle her zaman ki gibi çizim alanını belirtmeniz gerekir.
-Belirtilen alanın sol üst noktasının X ve Y koordinatları formunuzun (0,0) noktasına taşımanız gerekir.Yalnız en önemli noktalardan birisi taşıma işlemi yapılırken formun (0,0) noktasıyla tuvalin X Y koordinatlarının farkı verilir.Çok önemlidir.Sakın unutmayın direk (0,0) noktasını vermiyoruz.Farkını veriyoruz arkadaşlar.
-Çizim alanımızı formun 0,0 noktasına taşıdıktan sonra istediğimiz açı değerini vererek çizim alanımızı döndürüyoruz.
-Çizim yapacağımız alanı döndürdükten sonra eski koordinatına yani istediğimiz noktaya geri taşıyoruz.Bakın dikkat edin aynı şekilde taşıma işlemi yapılıyor.Direk koordinat noktaları verilip bir noktadan al diğerine bırak işlemi yok.İki nokta arasındaki farklar belirtiliyor.
-Evet tuvalimizi eski yerine taşıdıktan sonra artık çizimimizi rahatlıkla yapabiliriz.Özetlemek gerekirse tuvalini yarat.(0,0) noktasına taşı , açısını ayarlayıp döndür,tekrar eski yerine al ve çizimi yap şeklinde aşamalardan oluşmaktadır.

Evet gelelim mantığını anladıktan sonra kodlara ...


Graphics g = this.CreateGraphics(); // çizim alanı yaratılır.
            Pen kalem = new Pen(Color.DarkBlue, 2.0f); // çizim için kalem oluşturulur.

            g.TranslateTransform(-250, -200, System.Drawing.Drawing2D.MatrixOrder.Prepend);

// çizim alanımız (0,0) noktasına taşınır.Bakın buradan çizimin yapılacağı alan daha önceden
//250,200 noktasından itibaren yapılacağı düşünülmüştür ve ona göre taşıma işlemi yapılmıştır
//Dikkat edilmesi gerek bir nokta daha var ki o da MatrixOrder kısmıdır.Bu kısımda öncelik //sırası belirtilir.İlk yapılacak olana Prepend değeri verilir.Ondan sonraki çizim alanı //ayarlamalarında ise Appen durumu verilir.


            g.RotateTransform(45, System.Drawing.Drawing2D.MatrixOrder.Append);

//Çizim alanı taşındıktan sonra istenilen açıda döndürme işlemi yapılır.

            g.TranslateTransform(250, 200, System.Drawing.Drawing2D.MatrixOrder.Append);

//Çizim alanı döndürme işlemi yapıldıktan sonra tekrar asıl koordinatına geri taşınır.

            g.DrawRectangle(kalem, 100, 100, 300, 200);

// en son olarak da çizim alanı ile ilgili tüm işlemler yapıldıktan sonra çizim işlemi //gerçekleşir.Fakat bu işlemlerde sıra çok önemlidir.İyi düşünülüp yapılmalıdır.


Umarım yararlı olmuştur.Bir diğer makalede görüşmek dileğiyle ... 

Hiç yorum yok:

Yorum Gönder