Selam .NET Dostları
Bu Yazımda GDI+'da pasta grafiği oluşturabileceğimiz bir metod paylaşıcağım Hocam Türkay ÜRKMEZ'in Katkıları.....
Öncelikler Formumuza bir tane Panel ekliyoruz ve Dock özelliğini Fill yapıyoruz.
namespace PastaGrafigi { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // Pasta Grafigi çizimi... Heryerde kullanmak için.Metod. // Pasta grafiği saat yönünde çalışıyor. // Yuzdeleri oluşturduk, renklerimizi oluşturduk, Yer'i oluşturduk, Boyutlarını oluşturduk... void pastaGrafigiCiz(double[] yuzdeler, Color[] renkler, Graphics alan, Point yer, Size boyut) { //birinci kural yüzdelerin toplamı 100 olmak zorunda. // Double ın içindeki yüzdeleri topluyoruz. // Önce Topluyoruz. double toplam = 0; foreach (double yuzde in yuzdeler) { toplam += yuzde; } // Toplam 100 değilse hata mesajını ver. if (toplam != 100) { MessageBox.Show("Yüzde değerlerinin toplamı 100 olmalıdır."); return; // return demezsek grafigi tekrar çizyeme çalışır. } // ikinci Kontrol // renklerin uzunlugu ile yüzdelerin uzunlugu eşit degil ise. if (renkler.Length != yuzdeler.Length) { MessageBox.Show("Her Yüzdelik dilime bir renk düşmeli"); return; } // Toplam Yüzdemizi tutalım. ikinci açının nerden başlıyacagını kontrol eder. double toplamYuzde = 0; //Yüksek Kalite Çiz. alan.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //Yüzdelerin uzunluguna kadar dizinin elamanlarına tek tek uygula for (int i = 0; i < yuzdeler.Length; i++) { alan.FillPie( new SolidBrush(renkler[i]), new Rectangle(yer, boyut), (float)(toplamYuzde * 360 / 100), (float)(yuzdeler[i] * 360 / 100) ); toplamYuzde += yuzdeler[i]; } alan.Dispose(); } private void panel1_Paint(object sender, PaintEventArgs e) { double[] yuzdeler = { 25, 18, 53, 4 }; Color[] renkler = { Color.Gold, Color.Green, Color.DarkBlue, Color.Black }; pastaGrafigiCiz(yuzdeler, renkler, e.Graphics,new Point(5, 5), new Size(400, 400)); } } }