C# Forma Daire ve Elips Çizme

Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde form üzerine daire çizmeyi anlatacağım. Hadi başlayalım !
Öncelikle yapacağımız işlem grafiksel bir işlem olduğu için grafik kütüphanesi olan System.Drawing kütüphanesini formumuza dahil edelim. Bunun için sayfanın en başına
using System.Drawing;
kod satırını ekleyelim. Grafiksel işlemler yani yazı yazma, daire çizme, çizgi çizme vs. gibi işlemler formun Load olayı (eventi) içerisinde tetiklenemediği için forma bi tane buton ekleyelim ve bu butonun click olayını oluşturalım, sonrasında kod yazmaya başlayalım.
Grafiksel işlemler yapacağımızı söylemiştik, tabi bunu belirtmemiz gerekiyor ve bunun yolu da grafik nesnesi oluşturmaktan geçiyor. Grafik (C#’taki adı Graphics) nesnesini formun sahip olduğu CreateGraphics() fonksiyonunu kullanarak oluşturacağız.
Graphics grafik = CreateGraphics();
grafik nesnesi içerisine bakarsanız (grafik. yazdıktan sonra çıkan seçeneklere bakarsanız) zibilyon tane fonksiyon var, tabi her biri ayrı işlem yapıyor. Biz daire çizmek için DrawEllipse() fonksiyonunu kullanacağız. Bu fonksiyon, çizim yapmak için Pen yani kalem nesnesi ve dairenin konum ve genişliğini belirten Rectangle nesnesi olmak üzere 2 parametre alıyor ve void tipte yani geriye herhangi bir şey döndürmüyor. Şimdi öncelikle bir tane Pen nesnesi oluşturalım. Pen sınıfının constructor metoduna bakarsak bizim için en mantıklı olanı (4 tane override özelliği var) çizim yapacak olan Brush yani fırça nesnesi ve yazının kalınlığını belirten float tipinde sayı olmak üzere 2 parametre alanıdır ve bizde bunu kullanacağız. Brush sınıfına da bakarsak yazı rengini belirten Color tipinden türetilebiliyor. Yani Pen nesnesini şöyle türeteceğiz;
Pen kalem = new Pen(Color.Red, 5);
Şimdi de Rectangle nesnesi oluşturalım. Rectangle sınıfına da bakarsak 3 tane override özelliği var ve ben Point ve Size nesnesi alan özelliğini kullanacağım. Point nesnesi ile dairenin çizileceği koordinatlar ve Size ile dairenin büyüklüğünü belirtebileceğiz. Öncelikle Point nesnesi oluşturalım.
Point sınıfının constructor metodu x eksenindeki nokta ve y eksenindeki nokta olmak üzere 2 tane integer tipte parametre istiyor. Örneğin biz daireyi formun (100, 100) noktasında çizilmesini istiyorsak;
Point konum = new Point(100, 100);
Point nesnesi oluşturduk, şimdi sırada Size nesnesi var. Bu sınıfın constructor metodu da genişlik ve yükseklik olmak üzere 2 parametre alıyor. Örneğin (50, 50) boyutunda daire çizmek istiyorsak;
Size size = new Size(50, 50);
Rectangle için gerekli olan 2 parametreyi oluşturduk, şimdi bi tane Rectangle nesnesi oluşturalım.
Rectangle rec = new Rectangle(konum, size);
Taa en başa dönersek, DrawEllipse fonksiyonu ile daire çizecektik ya, işte onun için gerekli olan tüm parametreleri hazırladık. E artık bi daire çizelim dimi 🙂
grafik.DrawEllipse(kalem, rec);
Evet projeyi çalıştırıp forma eklediğimiz butona tıklayınca formun (100, 100) noktasında ve (50, 50) boyutlarında bi daire çizilmiş olduğunu göreceksiniz.
Ha yeri gelmişken söyleyeyim, DrawEllipse() fonksiyonu ile sadece daire çizilmiyor, aslında fonksiyon ismine bakarsanız Türkçe karşılığı Elips Çiz anlamına geliyor. “E biz niye ve nasıl daire çiziyoruz” derseniz, hatırlarsanız Size nesnesi türetmiştik ya, türetirken verdiğimiz iki parametreyi de aynı verirsek daire, farklı verirsek elips çizecektir. Çünkü daire yarıçapı her yerde aynı olan iki boyutlu bi cisim, elips ise yarıçapı değişebilen sağdan soldan, alttan üstten içe yada dışa basık olan bi cisim. Velhasıl kelam, Size nesnesine gönderdiğiniz parametreleri ne kadar birbirine yakın verirseniz daireye o kadar yakın çizim yapılır, ne kadar uzak/farklı parametre verirseniz elipse o kadar yakın çizim yapılır.
Evet bu dersimizde bu kadardı, yazdığımız tüm kodları daha toplu olması için aşağıya bırakıyorum;
Graphics grafik = CreateGraphics();
Pen kalem = new Pen(Color.Red, 5);
Point konum = new Point(100, 100);
Size size = new Size(50, 50);
Rectangle rec = new Rectangle(konum, size);
grafik.DrawEllipse(kalem, rec);
Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.