Jump to content

Gdi+ Ile Yuvarlak Köşeli Ve Gölgeli Form


wmismail

Recommended Posts

Visual Studio’nun bize sundugu Form standart bir yapiya sahiptir. Dört köse ve dört kenar... Ama bununla birlikte görsel olarak birseyler gerçeklestirebilecegimiz GDI+ class’ini da bize sunmaktadir. GDI+ class’inin içinde bulunan methodlarla form üzerine çizim yapmak mümkündür. Hiç uzatmadan makalemize –her zamanki gibi- ufak bir çalisma ile devam etmek istiyorum. Ama projeye baslamadan önce ufak birkaç bilgiyi sizlere sunmak isterim: Bilgisayarin genelini düsünürseniz; çizim işlemleri hep bir koordinat sistemine dayalidir. Koordinat sistemini gözünüzde büyütmeyin! Lisede ögrendigimiz x ve y yapisindan farklı birseyden bhsetmeyecegim. Evet... X ve Y koordinat sistemi kullanilarak çizim işlemi gerçeklestirilmektedir. Burada bilinmesi gereken önemli noktalalardan biri; baslangiç, yani orjin noktasinin neresi oldugunur: Orjin noktasi asagidaki resimde de görüldügü gibi ekranin sol üst kösesidir. Yatay düzlem x düzlemi, dikey düzlem ise y düzlemidir.

1000000996_image001.jpg

Bir Windows formu üzerindeki koordinat sistemi de monitörden farklı degildir. Form üzerindeki sistemde orjin noktasi formun kullanilabilir alaninin sol üst kösesidir.

1000000996_image002.jpg

Artik bilgi sahibi oldugumuz koordinat sistemini kullanarak formumuzu sekillendirebiliriz. Formumuzun üzerine daireler, ve dörtgenler kullanarak yuvarlak köseli bir yapi olusturup içini Control rengi ile dolduracagiz. Ilk önce köselere transparan kareler çizdirecegiz. Ardindan içlerine control renginde daireler çizdirecegiz. En on olarak içte kalan alanlari doldurabilmek için gene içleri control rengi olan dörtgenler çizdirecegiz.

1000000996_image003.jpg

Gölge içinde ayni işlemleri yaptiracagiz. Fakat koordinatlari x ve y de 5 fazla olacak... Yeni bir proje açarak formumuzu olusturalim: Gene makalemde VB ve C# kodlarini sunacagim. Form ekrana basilmadan hemen önce firlatilan Paint eventi bize formun tasarlanmasi için mükemmel bir firsat sunmaktadir. Çizim için kullanacagimiz methodlar; System.Drawing namespce’inin altindaki Graphics classinin altindadir. Formun paint aninin parametrelerinden biri olan e Graphics classi tipinde Graphics property’sine sahiptir. Bu yüzden Graphics classi tipinde bir degisken tanimlayarak e.Graphics’e esitleyelim:

C# 1000000996_image004.jpg

VB 1000000996_image005.jpg

Simdi ise formumuzun dört kösesine daireleri çizdirebilmemiz için gereken kare’leri tanimlayip çizdirelim. Ancak alt ve sag kisimda gölge için pay birakalim:

C# 1000000996_image006.jpg

VB 1000000996_image007.jpg

Karelerde hazir olduguna göre; dairelerimizi çizdirebiliriz. Bu işlem için FillEllipse metodunu kullanacagiz. Bu method içi dolu dairesel çizim yapmaktadir. Ancak aireyi çizdirecegimiz FillEllipse methodu bizden bir Brush (Firça) istemektedir. Bizde ona daireye verecegimiz renk Control rengi olacagindan dolayi ve Control rengi bir System rengi oldugundan dolayi; Control rengine sahip SystemBrushes verecegiz :

C# 1000000996_image008.jpg

VB 1000000996_image009.jpg

Artik ortadaki alani dolduracak dörtgenleri çizebiliriz. Bunun için karelerin form kenarlarina dayali kenarlarinin tam ortalarina köseleri gelecek dikey ve yatay olmak üzere iki dörtgen çizecegiz :

C# 1000000996_image010.jpg

VB 1000000996_image011.jpg

Gölge içinde yapacagimiz işlemler asagidaki gibidir. Form çiziminden farklari 5 birim saga ve asagiya çizilmesi ile :

C# 1000000996_image012.jpg

VB 1000000996_image013.jpg

Son olarak apilmasi gereken işlemler; Desing tarafinda formumuzun FormBorderStyle property’sini None yapmak, BackColor property’sine hiç kullanmayacagimiz bir renk vermek ve TransparencyKey property’sine BeckColor’a verdigimiz rengi vererek o renge sahip alanlarin transparan olacağını belirtmektir.

1000000996_image014.jpg

Artik projemizi çalistirabiliriz :

1000000996_image015.jpg

Bir baska makalede görüşmek üzere...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...