ABD Münbiçi bırakır mı ?

ABD, Münbiçin yarısı sizde yarısı bizde kalsın dedi

SON 20 YILDA OSCAR KAZANAN KADINLAR

Son 20 yılda En İyi Kadın Oyuncu kategorisinde Oscar kazanan oyuncuların listesi...

AFRİN HAREKATI

Zeytin Dalı Harekatında teröristlerden temizlenen bölge artıyor

Silkroad XIAN

Silkroad sevdalıları için bir server

  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
C# basit Graphics Sınıfı

 
#1

Graphics Sınıfı

 
Graphics sınıfı basit seviye de yapılacak grafiksel işlemler için yeterli özellik ve metodlara sahiptir. Form üzerine yazı ve grafik çizimi ve bu çizimlere uygulanacak temel seviyedeki efektler Graphics sınıfı ile kolayca uygulanabilir.
 

 

Form Üzerine Yazı Çizimi

 

 

        1- DrawString() metodu: Form üzerine yazdıracağımız yazıyı çizdirip yazıma hazırlarız.

 

             1.thumb.png.3f3f7e41e74880c09543c9da17ae3e19.png
 

                string s: Çizdirilecek olan string' in ismi.

 

                Font font: Çizdirilecek olan metnin yazı tipi.

 

                Brush brush: Çizdirilecek olan metnin renk ve görünüm ayarlarını içerir.

 

                Float x: Çizdirilecek olan metnin yatay koordinatlarını belirtir.

 

                Float y: Çizdirilecek olan metnin dikey koordinatlarını belirtir.

 

                StringFormat formatÇizdirilecek olan metnin görünüm ve yerleşim ayarlarını belirtir. Bu ayarlarStringFormatFlags altında belirlenir.

 

                         1- DirectionRightToLeft: Yazıyı sağdan sola doğru olacak biçimde görüntülenir.

                         2- DirectionVertical: Yazıyı dikey biçimde görüntüler.

                         3- NoWrap: Bu seçenek kullanıldığında çizdirilen yazının, çizdirilen şekil tarafından otomatik olarak çevrelenmesi iptal edilir.

                         4- LineLimit: Çizdirilen bir şekil içerisine yazdırılan satırlar, şeklin çizgileri üzerine denk gelmeyecek biçimde kaydırılır.

                         5- NoClip: Çizdirilen bir şekil içerisine yazdırılan satırlar, şeklin içerisine sığmadığı takdirde şeklin dışında devam eder.

 

 

ÖRN:

          private void btnUygula_Click(object sender, EventArgs e)

          {
                Graphics gr = this.CreateGraphics(); //Form'un üzerine Grafik oluşturuyor ilk önce CreateGraphics metodu ile.
 
                string drawString = "Mert";
 
                Font drawFont = new Font("Comic Sans MS", 20, FontStyle.Bold | FontStyle.Italic);
 
                SolidBrush drawBrush = new SolidBrush(Color.Black);
 
                gr.DrawString(drawString, drawFont, drawBrush, 162, 50);
 
                drawFont.Dispose();
                drawBrush.Dispose();
                gr.Dispose();
          }

 

Ekran Çıktısı: 2.png.6736df38b0f19f137791194f6c16dc49.png

 

NOT: Eğer ayrı ayrı FontSolidBrush sınıfı oluşturup bunları direk parametreye vermek istiyorsak ve verdikten sonra da Form üzerine çizim yaparken kullandığımız hafıza kaynaklarının boşaltılmasını sağlarsak iyi olur Dispose() metodu ile. Yukarıda da zaten yaptık bu işlemi.

 

NOT: Windows işletim sistemi içerisinde yüklü olan yazı tiplerinin listesine FontFamily sınıfının Familiesözelliği ile erişebiliriz.

 

ÖRN:

             private void Form1_Load(object sender, EventArgs e)

            {
                  foreach (FontFamily item in FontFamily.Families)
                            listBox1.Items.Add(item.Name);
            }
 
            private void listBox1_SelectedValueChanged(object sender, EventArgs e)
            {
                  Graphics gr = this.CreateGraphics(); //listBox'da ki item'ler her seçildiğinde Form'un üzerine Grafik oluşturuluyor.
 
                  gr.Clear(SystemColors.Control); //listBox'da her font seçildiğinde seçilen o Font'a göre Form'da grafik çizileceği için bu çizilen grafikler üst üste gelir. O yüzden her seçildiğinde eski grafik çizimin üzerine gelmemesi için Form'un varsayılan rengi (Control) ile sildik. Eğer SystemsColor.Control yapmasak Color.Red; yapsak bir önce ki çizilen grafik çizimini kırmızı renk ile siler. Yani silme işlemi olur ama Form'un arkaplan'ı kırmızı olur hep. O yüzden SystemsColor.Control; yaptık.
 
                  gr.DrawString("9156"new Font(listBox1.Text, 30,FontStyle.Bold | FontStyle.Italic), newSolidBrush(Color.Blue), 12, 160);
            }

 

Ekran Çıktısı: 3.png.8206af57c3d88ec1f820ecf2c302e3f8.png

 

 

 

Form Üzerine Şekil Çizimi

 

        1- DrawLine() metodu: İki nokta arasını birleştiren çizgi çizmek amacıyla kullanılır.

 

                                 4.png.1f6465240ba0d477e8edae58d358f2c6.png

 

                   Pen pen: Form üzerine yazı ya da şekil çizmek amacıyla kullanılan nesnedir. Çizgi rengi, kalınlığı ve stil gibi özelliklere sahiptir.

 

                   Point pt1: Başlangıç noktası.

 

                   Point pt2: Bitiş noktası.

 

ÖRN:

        private void btnÇizgiÇiz_Click(object sender, EventArgs e)

        {
               Graphics gr = this.CreateGraphics();
 
               gr.DrawLine( new Pen(Color.DarkBlue), new Point(250,98), new Point(150,10));
        }
 
Ekran Çıktısı:  5.png.b6ff2fd43698c36ac202317d6e726ec0.png
 
 

        2- DrawRectangle() metodu: Dikdörtgen çizmek amacı ile kullanılır.

 

                              6.png.7c2e669498dd3ff3647eca2e44fc44d2.png

 

                 Rectangle(location x, location y, genişlik, yükseklik) 'dir parametreleri.

 

ÖRN:

         private void btnÇiz_Click(object sender, EventArgs e)

         {
               Graphics gr = this.CreateGraphics();
               gr.DrawRectangle(new Pen(Color.Green), new Rectangle(87, 38, 126, 112));
         }
 

Ekran Çıktısı: 7.png.e43759ee2aac90c2982f1d31f05051f4.png

 

 

        3- DrawArc() metodu: Yapısı bir dikdörtgen tarafından belirlenen bir elipsin, bir kısmını içeren yay çizmek amacı ile kullanılır.

 

                               8.png.62523c9cebfa0613b3e5b2433d8a2b10.png

 

           float StartAngle: Yayın x ekseninde saat yönündeki başlangıç açısını belirtir.

 

           float sweepAngle: Yayın x ekseninde saat yönündeki başlangıç açısını belirtir.

 

ÖRN:

      private void btnÇiz(object sender, EventArgs e)

      {
         Graphics gr = this.CreateGraphics();
         gr.DrawArc(new Pen(Color.Green), new Rectangle(87, 38, 126, 112), 180, 180);
      }
 

Ekran Çıktısı: 9.png.6a637db8e24fb86f5ce7461cde602d3c.png

 

        4- DrawBezier() metodu: Belirtilen dört nokta vasıtasıyla bir eğri çizmek amacıyla kullanılır.

        
                                 10.png.bb3be32af373128340b6b235beb16735.png
 

                Point pt1: Eğrinin başlangıç noktasını belirtir.

 

                Point pt2: Eğrinin ilk kontrol noktasını belirtir.

 

                Point pt3: Eğrinin ikinci kontrol noktasını belirtir.

 

                Point pt4: Eğrinin bitiş noktasını belirtir.

 

 

        5- DrawCurve() metodu: Bir nokta dizisi yardımıyla eğri çizmek amacıyla kullanılır.

 

                               11.png.6f9a5a181908e6099195670cee479df8.png

 

              Point[] points: Nokta dizisi.

 

 

        6- DrawClosedCurve() metodu: Bir nokta dizisi yardımıyla kapalı eğri çizmek amacıyla kullanılır.

 

                        12.png.b47d3887adde5cc6bce31e3e16f28233.png

 

              Point[] points: Nokta dizisi.

 

 

        7- DrawEllipse() metodu: Yapısı bir dikdörtgen tarafından belirlenen bir elips çizmek amacıyla kullanılır.

 

                       13.png.58b40c41820327dcfef5c1d96a95e9ae.png

 

ÖRN:

        Graphics gr = this.CreateGraphics();

        gr.DrawEllipse(new Pen(Color.Blue), new Rectangle(87, 38, 126, 112));

 

Ekran Çıktısı:  14.png.2e7b7f424a187fb426aac0f6abd8f017.png

 

 

        8- DrawPie() metodu: Pasta grafiği çizmek amacıyla kullanılır.

 

                       15.png.221019e1baa7e1a22e3894d3950ae804.png

 

ÖRN:

       Graphics gr = this.CreateGraphics();
 
       gr.DrawPie(new Pen(Color.Yellow,10), new Rectangle(87, 38, 126, 112), 180, 180); //Kalınlığını 40 ayarladık.

 

Ekran Çıktısı:  16.png.038c57910fa5aca81a3f1ca18b5dbfa1.png

 

        9- DrawPolygon() metodu: Yapısı bir nokta dizisi tarafından belirlenen çokgen çizmek amacıyla kullanılır.

  

                                  17.png.f29179b15139ac1a2ce37ded12d59459.png

 

          Point[] points: Nokta dizisi.

 

        10- DrawIcon() ve DrawImage() metodu: Icon ve Resim çizmek amacıyla kullanılır. Bu Icon ve Resimler bu metotların parametrelerin de dosya yolu şeklinde belirtilir ve aynı zamanda bir Point değerleri de girilir. Girildikten sonra parametre de belirtilen o dosya yolunda ki Icon veya Resim yine bu metotların parametresinde belirtilen Point değerlerinin olduğu yere çizilir.

 

 

NOT: Yukarıdaki örnekleri çalıştırdığımzda Form üzerinde çizgiler üzerindeki bazı bozulmalara dikkat etmişsinizdir. Bu bozulmaları SmoothingMode işlemi ile gidermek mümkün. Ancak bunun için öncelikle usingSystem.Drawing.Drawing2D; sınıfını projemize dahil etmemiz gerekmektedir.

 

Bu işlemin ardından kodumuzda...

 

             Graphics gr = this.CreateGraphics();

 

 ...... satırından sonra ........

 

             gr.SmoothingMode = SmoothingMode.AntiAlias;

 

...... satırını ekleyerek tekrar çalıştıralım herhangi bir kodumuzu.

 

 

ÖRN:

         private void btnUygula_Click(object sender, EventArgs e)

         {
              Graphics gr = this.CreateGraphics();
              gr.SmoothingMode = SmoothingMode.AntiAlias;
              gr.DrawEllipse(new Pen(Color.Blue), new Rectangle(87, 38, 126, 112));
         }
 
Ekran Çıktısı:  18.png.2094c34f3eb87277d439e9453fe69b30.png
 

NOT: Form üzerine çizdirdiğimiz şekillerin içlerini doldurmak için FillRectangle(), FillEllipse(), FillPie(), FillPolygon(), FillClosedCurve(), FillRegion() metotları kullanılır.

 

ÖRN:

     private void btnUygula(object sender, EventArgs e)

     {
        Graphics gr = this.CreateGraphics();
        gr.SmoothingMode = SmoothingMode.AntiAlias;
 
        gr.FillEllipse(new SolidBrush(Color.Red), new Rectangle(87, 38, 126, 112));
        }
 

Ekran Çıktısı: 19.png.f1ba8995e511be2297da9defd1aa4e77.png

 

 

NOT: Eğer Form açılırken birşey çizdirmesini istiyorsak Form'un Load event'ini değil Paint event'ini kullanıyoruz.

 

 

Tek bir renk ile şekillerin içerisini doldurabileceğimiz gibi farklı Brush (Brush Sınıfları) seçenekleri ile farklı biçimlerde de şekillerin içerisini doldurabiliriz.

 

          1- HatchBrushBu seçeneği kullanarak düz çizgileri kesik çizgiler, noktalar gibi farklı biçimlerle şeklin içerisini bölümleyebiliriz.

 

System.Drawing.Drawing2D namespace'i altında yer alır.

 
                                                 20.png.5355bad1dd68579a157dc16b02ed6df1.png
 

ÖRN:

       private void btnUygula(object sender, EventArgs e)

       {
            Graphics gr = this.CreateGraphics();
            gr.SmoothingMode = SmoothingMode.AntiAlias;
 
          gr.FillRectangle(new HatchBrush(HatchStyle.Weave,Color.Green,Color.Red), new Rectangle(87, 38, 126, 112));
       }
 

Ekran Çıktısı:  21.png.cfbc4bef5076921cad694dd8eec2a682.png

 

          2- LinearGradientBrust: Bu seçeneği kullanarak renk tonlamaları arasında geçişler gerçekleştirebiliriz.

 

System.Drawing.Drawing2D namespace'i altında yer alır.

 

                                                                 22.png.f6aa6ea57831022e1b0024869720dbf8.png

 

ÖRN:

        private void btnUygula(object sender, EventArgs e)

        {
           Graphics gr = this.CreateGraphics();
           gr.SmoothingMode = SmoothingMode.AntiAlias;
 
           gr.FillRectangle(new LinearGradientBrush(new Rectangle(87, 38, 126, 112),Color.Red,Color.Black,LinearGradientMode.Horizontal), new Rectangle(87, 38, 126, 112));
        }

 

Ekran Çıktısı: 23.png.bba3773e9584d67a6b89ddfd2f2a360b.png

 

Renk tonlamasında Brush seçeneği olarak 2 tane metot kullanılabilir:

 

           1- SetSigmaBellShape() metodu: Çan eğrisi şekli temel alınarak renk tonlaması gerçekleştirilir.

 

           2- SetBlendTriangularShape() metodu: Bir merkez renk ve merkezin her iki ucundaki tek bir renk için doğrusal bir renk tonlaması gerçekleştirilir.

 

 

          3- PathGradientBrush: Bu class ile kontrol noktaları vasıtasıyla renk geçişleri gerçekleştirebiliriz.

 

System.Drawing.Drawing2D namespace'i altında yer alır.

 

                                                 25.png.48f4121adbabc303ca2447634c60f423.png

 

[align=left][b][color=#ffd320]



Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  C# File Info Sınıfı Kullanımı sempatik141 0 1,129 11-06-2017, Saat: 22:26
Son Yorum: sempatik141

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2018 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-2018 Tüm hakları saklıdır.