Visual Basic.NET Grafik Kütüphanesi

 

Visual Basic.NET’in grafik kütüphanesini kullanarak bazi sekillerin nasil çizildigini anlatmaya çalisacagim.
Düz çizgi ile baslayalim: Ilk yapmamiz gereken formumuza, toolbox‘tan bir PictureBoxekliyoruz. Bir de button ekleyip adini btnCizgi seklinde degistiriyoruz.
Gerçek hayatta bize çizgi çizmemiz için lazim olan nedir? Bir kalem ve bir kagit, oyle degil mi?
Visual Basic.NET’te de bunlar lazim. Öyleyse hemen bir kalem ve bir de kagit tanimliyoruz:

.
Dim kagit As Graphics
Dim kalem As Pen

 
Simdi sira kagit ve kalem degiskenlerine deger atamaya geldi. Graphics olarak tanimladigimiz kagit degiskenine daha once formumuza ekledigimiz PictureBox‘u atiyoruz ve CreateGraphicsmetodunu cagiriyoruz ki çizim yapabilelim:

 
kagit = PictureBox1.CreateGraphics()

 
Simdi sira kalem degiskenimize deger atamaya geldi:

 
kalem = New Pen(Color.Red)

 
Yeni bir Pen nesnesi olusturuyor ve renk olarak da kirmiziyi seçiyoruz.

 
Artik bir kalem ve bir de kagidimiz olduguna göre çizim yapabiliriz.
Visual Basic.NET’te düz çizgi metotlari dört adettir. Hepsini anlatmayacagim; bizim burada kullanacagimiz metot bes adet parametre gerektirir: kalem, yatay baslangiç noktasi, dikey baslangiç noktasi, yatay bitis noktasi ve dikey bitis noktasi.

 
Analitik ortami; X ve Y dogrularini gözümüzde canlandiralim.

 

 
kagit.DrawLine(kalem, 10, 20, 100, 110)

 
Olayin türkçesi söyle: Kagidimizi aliyoruz, yapacagimiz fiili belirliyoruz (DrawLine – çizgi çek), kalemimizle belirlenen noktalar (X1,Y1,X2,Y2) arasina çizgimizi çekiyoruz.
Bu kadar basit.

 
Simdi bir de dörtgen çizimine bakalim.

 
Dim kagit As Graphics = PictureBox1.CreateGraphics()
Dim kalem As Pen = New Pen(Color.Red)
kagit.DrawRectangle(kalem, 10, 20, 100, 100)

 
Prensip ayni, baslangiç ve bitis noktalarini belirliyor ve kalemimizle çizimimizi yapiyoruz.

 
Bir de daire (ellipse) çizelim:

 
Dim kagit As Graphics = PictureBox1.CreateGraphics()
Dim kalem As Pen = New Pen(Color.DarkBlue)
kagit.DrawEllipse(kalem, 150, 20, 100, 100)

 
Bunu biraz açiklamak istiyorum. Visual Basic.NET daireyi baslica iki yöntemle çizer:
1-) Önce bir dörtgen taslagi içine uygun daireyi çizer;
 

 
2-) Daireyi baslangiç noktasi (X1,Y1), genislik ve yükseklige göre çizer.

 
Sonuçta ikisi de ayni kapiya çikar.

 
Simdi daha kapsamli bir uygulamayla ögrendiklerimizi pekistirelim istiyorum.
Bir forum açalim ve bir PictureBox ile üç adet buton eklelim.

  .

 

 
Sonra da su kodlari ekleyelim:

 
PublicClass Form1
Dim x1 AsInteger = 100
Dim y1 AsInteger = 100
Dim x2 AsInteger = 50
Dim y2 AsInteger = 50

 
PrivateSub BalonCiz(ByVal tual As Graphics, _
ByVal KursunKalem As Pen, _
ByVal BaslangicNoktasi1 AsInteger, _
ByVal BaslangicNoktasi2 AsInteger, _
ByVal Genislik AsInteger, _
ByVal Yukseklik AsInteger)

 
tual.DrawEllipse(KursunKalem, BaslangicNoktasi1, BaslangicNoktasi2, Genislik, Yukseklik)
EndSub

 
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
BalonCiz(PictureBox1.CreateGraphics, Pens.Black, x1, y1, x2, y2)
EndSub

 
PrivateSub btnBuyut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuyut.Click
PictureBox1.Refresh()
x2 += 5
y2 += 5
BalonCiz(PictureBox1.CreateGraphics, Pens.Black, x1, y1, x2, y2)
EndSub

 
PrivateSub btnKucut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKucut.Click
PictureBox1.Refresh()
x2 -= 5
y2 -= 5
BalonCiz(PictureBox1.CreateGraphics, Pens.Black, x1, y1, x2, y2)
EndSub

 
Yukaridaki örneklerden farkli olarak burada kagit ve kalem kullanmadim, kagit yerine dogrudan PicrureBox, kalem olusturmak yerine de hazir Pen nesnelerinden birini kullandim.
Ayrica yine bir ‘balon çizme’ metodu yazdim ki hazir metodu istedigim an çagirip kullanabileyim.
Metoduma 6 adet parametre ekledim. (Visual Basic.NET’te metotlar konusuna baska bu makalede degindim, o yuzden ayrintiya girmiyorum.)

 
Refresh() metodu, adinda da anlasilacagi üzere, çizim alanimizi, yani kagidigimizi degisikliklere karsi yineliyor ki, yeni olusan sekli görebilelim.
Bu konunun sonunda bir de ‘içi boyali’ sekillere deginmek istiyorum. Örnegin bir kare çizelim:

 
PictureBox1.CreateGraphics.FillRectangle(Brushes.Black, 10, 10, 100, 100)

 
Aradaki fark, Draw… (çiz) metodu yerine Fill (doldur) metodunu; pen (kalem) yerine ise Brushes (firça) kullanmis olmamizdir.

 
Visual Basic.NET grafik kütüphanesi çok zengin metotlar ve nesnelerle doludur. Bunlari deneyerek ögrenebiliriz. Dilim döndügünce bir kaçini anlatmaya ve temel bilgileri vermeye çalistim.

 
Bir baska makalede yine görüsürüz insallah.

 

 

 

 

 

 

11 thoughts on “Visual Basic.NET Grafik Kütüphanesi

  1. Hocam sizden bir ricada bulunmak istiyorum cizilmiş bir nesnenin uc noktasının yerini değiştirmek istiyorum. Bununla ilgili bir örneğınız varmı

  2. anlatym diliniz çok yalyn ve ba?aryly.
    yeni ba?layan biri örnekleri kolaylykla tatbik edebilir.
    güzel bir anlatym olmu?.
    tebrik ederim.

  3. Anlatim çok isime yaradi tesekkürler. Konunun üzerinden uzun zaman geçmis ama biri bana yardim edebilirse seviirim. Benim bu çizdigim sekilleri jpg veya baska bir formatta kaydetmem gerekiyor. Bunu nasil yapabilirim. Birde farkli bir pencereye tiklayip tekrar programa döndügümde çizimler siliniyor bunu nasil engelleriz. Tesekkürler..

  4. Dursun bey, isterseniz forum bölümünde ödevinizin ayrintilarini anlatin, elimden geldigi kadar ardim etmeye çalisirim. 

  5. BN DÖNEM ÖDEV ALDIM GRAFIK NESNELERIYLE ILGIL NASIL YAPMAMLAZIM BANA YARDIMCI OLA BILIRMISNIZ

  6. Tek bir çizgi metodu ile yapilabilir. Biraz hayal gücü azcik da matematik varsa -ki vardir- tamamdir bu is. Üç boyutlu sekillerde önemli olan üçüncü boyutu, yani derinlik hissini verebilmektir. Insallah bir aralik zamanim olursa bir-iki sekil çizmeye çalisirim sizin için. 

  7.  cok faydasi oldu böyle bilgiler paylastiginiz için cok tesekkür ederim.benm 3 boyutlu küp,piramit,silindir ve küre çizebilen programa ihtiyacim var ama nasil yapacagimi bilmiyorum fikir verirseniz cok sevinirm..

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir