msHOWTO

C# da grafik çizmek etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# da grafik çizmek etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

11 Nisan 2012 Çarşamba

C# GDI Örnek - Dönen Dikdötgenler

Merhaba arkadaşlar bu örneğimizde merkez noktaları aynı olan dikdörtgenlerin döndürülmesini sağlayan uygulama yapacağız.Öncelikle formunuza bir adet buton ve bir adet timer ekleyin.Butonun ismini buttonDonekDikdortgen olarak ayarlayın.Timer in ismini de timerDikdörtgen olarak ayarlayın .Ve son olarak aşağıdaki kodları yazın.





        private void buttonDonekDikdortgen_Click(object sender, EventArgs e)
        {
            timerDikdortgen.Start();
            rnd = new Random();
        }

        int aci = 0;
        Random rnd;
        private void timerDikdortgen_Tick(object sender, EventArgs e)
        {
            this.Refresh();
            Graphics g = this.CreateGraphics();

            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

// üstteki kod satırı çizimlerin daha yumuşak hatlı ve daha kaliteli olmasını sağlar.


            Color renk = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));


            Pen kalem = new Pen(renk, 2.0f);

            g.TranslateTransform(-250, -200, System.Drawing.Drawing2D.MatrixOrder.Prepend);
            g.RotateTransform(aci, System.Drawing.Drawing2D.MatrixOrder.Append);
            g.TranslateTransform(250, 200, System.Drawing.Drawing2D.MatrixOrder.Append);
            g.DrawRectangle(kalem, 100, 100, 300, 200);
            aci += 1;
        }


Güzel bir görüntü oluşuyor.Timer ın interval özelliğini değiştirerek istediğimiz hızda görüntü oluşturabiliriz.



C# GDI ile Atom Çizdirmek

Merhaba arkadaşlar.Bu örneğimde atamon şeklini çizen bir uygulamanın kodlarını sizlerle paylaşacağım.GDI mantığını anlamak için güzel bir örnektir.

Formunuza 1 adet button ve 1 adet timer yerleştirin. button un click olayına timer1.start(); yazın ve timer1 in tick olayına aşağıdaki kodları yazın ...


if (aci == 270)
            {
                this.Refresh();
                aci = 0;
            }


            Graphics g = this.CreateGraphics();
            Pen kalem = new Pen(Color.Blue, 2.0f);
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            g.TranslateTransform(-200, -150, System.Drawing.Drawing2D.MatrixOrder.Prepend);
            g.RotateTransform(aci, System.Drawing.Drawing2D.MatrixOrder.Append);
            g.TranslateTransform(200, 150, System.Drawing.Drawing2D.MatrixOrder.Append);
            g.DrawEllipse(kalem, 100, 100, 200, 100);
            aci += 45;

            g.FillEllipse(Brushes.Black, 190, 140, 20, 20);




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 ... 

C# GDI Kullanımı 2

Merhaba arkadaşlar . Gdi sınıfında kaldığımız yerden devam edelim. C# GDI Giriş 1 başlıklı makalemde gdi ın mantığını çizim mantığını dikkat edilmesi ve unutulmaması gerekilen önemli noktaları anlatıp Gdi sınıfını kullanmaya başlamıştım.Son olarak C# da daire çizmeyi anlatmıştım.Kaldığımız yerden devam edelim.

Örnek 4 : Yazı Çizmek :

Bir önceki makalemde form da dahil aslında tüm nesneler bir çizim ürünüdür diye anlatmıştım.Bu bilgiden yola çıkarak istediğim font ta istediğim boyutta ve istediğim yere yazı da çizdirebilirim.

Bu işlem için kullanılacak komut ; DrawString ...


g.DrawString("Koray DÜZGÜN", new Font("Arial", 28f), Brushes.BlueViolet, 150, 150);

DrawString komutunun istediği parametreler (çizimYapılacakYazı,Fontu,Brush/*yani fırça*/,X1.Y1)

Yazı çizim işleminde dikkat ettiyseniz Pen değil Brush istemiştir.Ve X1 ve Y1 noktaları da yazının sol üst noktasının bulunacağı konumdur.

Örnek 5 : Pasta Dilimi Çizmek :

Daha önce bir çok yerde görmüşsünüzdür mutlaka.Ağırlıklı kullanım alanı istatistik-i bilgiler vermektir.

Bu işlem için kullanılacak komut : DrawPie ...

g.FillPie(Brushes.Chocolate, 100, 100, 200, 200, 0, 45);

İstediği parametreler(Brush,Başlangıç X koordinatı,Başlangıç Y koordinatı,Genişliği,Yüksekliği,Başlangış açısı,Kaç derece çizileceği)