Pasta Grafiği Oluşturma (C#,VB.NET)
28 Ocak 2009 – 11:32Uygulamalarımızda elimizdeki mevcut verilerden yararlanarak kullanıcılara daha dikkat çekici bir görünüm vermek için grafiklerden yararlanırız. Örneğin sattığımız dört ürünün aylık satışa göre toplamda aldığı pay,televizyon kanallarının belirli bir saatte izlenme oranları gibi.
Makalemde sizlere pasta grafiği oluşturmdan bahsedeceğim. Uygulamamızda kullanıcılardan aldığımız üç değere dayanarak dinamik olarak grafik oluşturacağız. Uygulamamızı çalıştırdığımızda da aşağıda gördüğümüz ifade oluşacak.

İlk olarak kullanıcıdan alacağımız değerler yardımı ile herbir dilimin paylarını belirleyeceğiz.
float d1, d2, d3,toplamD;
d1 = float.Parse(txtD1.Text);
d2 = float.Parse(txtD2.Text);
d3 = float.Parse(txtD3.Text);
toplamD = d1 + d2 + d3;
float pd1, pd2, pd3;
pd1 = (d1 / toplamD) * 360;
pd2 = (d2 / toplamD) * 360;
pd3 = (d3 / toplamD) * 360;
Bu işlermleri yaptıktan sonra ise geriye grafik nesmeizi oluşturup , çizim için kullanacağımız kalem ve her bir dilimde kullacağımız renkleri tanımlamaya geldi.
Pen p = new Pen(Color.White, 4);
Graphics g = this.CreateGraphics();
Rectangle rec = new Rectangle(txtD1.Location.X + txtD1.Size.Width + 10, 12, 350, 250);
Brush b1 = new SolidBrush(Color.Red);
Brush b2 = new SolidBrush(Color.Blue);
Brush b3 = new SolidBrush(Color.Green);
Brush b4 = new SolidBrush(Color.BlueViolet);
Burada tanımlamış olduğumuz Rectangle ifadesi grafiğimiz sınırlarını belirlemize yardımcı oluyor. Burada eğer tam bir çember görmek istiyorsanız 350 ve 250 değerlerini eşitlemeniz yeterli olacaktır yada bu değerleri oynayarak şeklinizi değiştirebilirsiniz.
En son olarakta ekrandaki grafik ifadesini temizleyip pastanın dilimlerini oluşturuyoruz. Burada ilk başta pd1,pd2 ve pd3 değerlerinden yararlanıyoruz. Örneğin ilk dilimimiz 0 ile pd1 , pd2 değerimizde pd1 den başlayarak pd2 kadar ilereleyecek şeklinde ifade ediyoruz.
g.Clear(Form1.DefaultBackColor);
g.DrawPie(p, rec, 0, pd1);
g.FillPie(b1, rec, 0, pd1);
g.DrawPie(p, rec, pd1, pd2);
g.FillPie(b2, rec, pd1, pd2);
g.DrawPie(p, rec, pd2 + pd1, pd3);
g.FillPie(b3, rec, pd2 + pd1, pd3);
Grafiği oluşturan kodların bütünü
C#
float d1, d2, d3,toplamD;
d1 = int.Parse(txtD1.Text);
d2 = int.Parse(txtD2.Text);
d3 = int.Parse(txtD3.Text);
toplamD = d1 + d2 + d3;
float pd1, pd2, pd3;
pd1 = (d1 / toplamD) * 360;
pd2 = (d2 / toplamD) * 360;
pd3 = (d3 / toplamD) * 360;
Pen p = new Pen(Color.White, 4);
Graphics g = this.CreateGraphics();
Rectangle rec = new Rectangle(txtD1.Location.X + txtD1.Size.Width + 10, 12, 350, 250);
Brush b1 = new SolidBrush(Color.Red);
Brush b2 = new SolidBrush(Color.Blue);
Brush b3 = new SolidBrush(Color.Green);
Brush b4 = new SolidBrush(Color.BlueViolet);
g.Clear(Form1.DefaultBackColor);
g.DrawPie(p, rec, 0, pd1);
g.FillPie(b1, rec, 0, pd1);
g.DrawPie(p, rec, pd1, pd2);
g.FillPie(b2, rec, pd1, pd2);
g.DrawPie(p, rec, pd2 + pd1, pd3);
g.FillPie(b3, rec, pd2 + pd1, pd3);
VB.NET
Dim d1 As Single, d2 As Single, d3 As Single, toplamD As Single
d1 = Integer.Parse(txtD1.Text)
d2 = Integer.Parse(txtD2.Text)
d3 = Integer.Parse(txtD3.Text)
toplamD = d1 + d2 + d3
Dim pd1 As Single, pd2 As Single, pd3 As Single
pd1 = (d1 / toplamD) * 360
pd2 = (d2 / toplamD) * 360
pd3 = (d3 / toplamD) * 360
Dim p As New Pen(Color.White, 4)
Dim g As Graphics = Me.CreateGraphics()
Dim rec As New Rectangle(txtD1.Location.X + txtD1.Size.Width + 10, 12, 350, 250)
Dim b1 As Brush = New SolidBrush(Color.Red)
Dim b2 As Brush = New SolidBrush(Color.Blue)
Dim b3 As Brush = New SolidBrush(Color.Green)
Dim b4 As Brush = New SolidBrush(Color.BlueViolet)
g.Clear(Form1.DefaultBackColor)
g.DrawPie(p, rec, 0, pd1)
g.FillPie(b1, rec, 0, pd1)
g.DrawPie(p, rec, pd1, pd2)
g.FillPie(b2, rec, pd1, pd2)
g.DrawPie(p, rec, pd2 + pd1, pd3)
g.FillPie(b3, rec, pd2 + pd1, pd3)


One Response to “Pasta Grafiği Oluşturma (C#,VB.NET)”
Teşekkür ederim paylaşımın için çok saol işime çok yaradı .
By Uğur on Eki 27, 2009