Bu yazımızda C# Chart kontrolünün kullanımı ile Grafik oluşturmayı gösteren bir örnek oluşturacağız. Chart kontrolü ile Grafik oluşturmak için kullanacağımız projemizde öğrenciler ve aldığı oy sayılarını kullanarak bir örnek gerçekleştireceğiz.
Ayrıca C# dilinde yazılmış daha fazla örnek ve konular için C# Dersleri yazısını yada sağ üstte bulunan site içinde arama panelini kullanabilirsiniz.
Örneğimizi Sütun Grafik ve Pasta Grafik olarak ayrı ayrı gerçekleştireceğiz.
Projemize Chart kontrolünü eklemek için Toolbox penceresini kullanacağız. Bunun için Toolbox Data bölümünden projemize Chart kontrolünü ekleyeceğiz.
Chart kontrolünü ekledikten sonra aşağıdaki ayarlamayı yapacağız. Bunun için chart1 kontrolü üzerine bir kez tıkladıktan sonra Properties penceresinden Series özelliğine tıklayacağız.
Daha sonra açılan pencerede aşağıdaki ayarı yapacağız. Bu bölümde Name özelliğine verdiğimiz isim önemli. Kod kısmında bu ismi kullanarak kodlarımızı yazacağız.
Projemize aşağıdaki şekilde Label, TextBox, Button kontrollerini de ekleyerek aşağıdaki hale getiriyoruz.
Şimdi Grafik butonuna basıldığında Label içindeki isimlerin ve bu kişilerin aldığı oyların grafik olarak gösterimini sağlayalım.
Button için yazmış olduğumuz kodları açıklayalım.
Öncelikle öğrencilerin almış olduğu oyları Textbox‘ lardan değişkenlere aktarıyoruz.
1 2 3 4 5 6 7 | double oy1, oy2, oy3, oy4; oy1 = Convert.ToDouble(textBox1.Text); oy2 = Convert.ToDouble(textBox2.Text); oy3 = Convert.ToDouble(textBox3.Text); oy4 = Convert.ToDouble(textBox4.Text); |
Daha sonra bu değerleri Button’a bastığımızda Grafiğimize ekleyeceğiz. Fakat butona her bastığımızda yanına ekleme yapacağından öncelikle grafiğimizi temizleyeceğiz (Clear).
1 2 3 4 5 6 | foreach (var series in chart1.Series) { series.Points.Clear(); } |
Bu işlemden sonra değer eklemelerini yapabiliriz.
1 2 3 4 5 6 7 | //Grafiğe değer ekleme chart1.Series["OGRENCI"].Points.Add(oy1); chart1.Series["OGRENCI"].Points.Add(oy2); chart1.Series["OGRENCI"].Points.Add(oy3); chart1.Series["OGRENCI"].Points.Add(oy4); |
Şimdi grafiğimizde X ekseni için öğrenci isimlerini Label kontrollerinden alalım.
1 2 3 4 5 6 7 | //x ekseninde öğrenci isimlerini belirleme chart1.Series["OGRENCI"].Points[0].AxisLabel = label1.Text; chart1.Series["OGRENCI"].Points[1].AxisLabel = label2.Text; chart1.Series["OGRENCI"].Points[2].AxisLabel = label3.Text; chart1.Series["OGRENCI"].Points[3].AxisLabel = label4.Text; |
Bu işlemden sonra grafiğin sütun renklerini ayrı ayrı değiştirelim.
1 2 3 4 5 6 7 | //Sütun renklerini belirleme chart1.Series["OGRENCI"].Points[0].Color = Color.Aqua; chart1.Series["OGRENCI"].Points[1].Color = Color.Chocolate; chart1.Series["OGRENCI"].Points[2].Color = Color.Orange; chart1.Series["OGRENCI"].Points[3].Color = Color.RoyalBlue; |
X eksenindeki Öğrenci isimlerini dikey olarak yazdırmak için gerekli kod satırını yazalım.Örneğimizde -70 olarak hafif eğimli olacak şekilde ayarladık. Bu değeri -90 yaparak tam 90 derece yani dikey olmasını sağlayabilirsiniz.
1 2 3 | chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -70; // Öğrenci isimleri Dikey |
Son olarak Grafiğimize bir arka plan rengi vereceğiz.
1 2 3 | chart1.BackColor = Color.YellowGreen;//Arka Plan rengi |
Kodlarımızı bir arada görelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | private void button1_Click(object sender, EventArgs e) { double oy1, oy2, oy3, oy4; oy1 = Convert.ToDouble(textBox1.Text); oy2 = Convert.ToDouble(textBox2.Text); oy3 = Convert.ToDouble(textBox3.Text); oy4 = Convert.ToDouble(textBox4.Text); //Point leri temizleme. foreach (var series in chart1.Series) { series.Points.Clear(); } //Grafiğe değer ekleme chart1.Series["OGRENCI"].Points.Add(oy1); chart1.Series["OGRENCI"].Points.Add(oy2); chart1.Series["OGRENCI"].Points.Add(oy3); chart1.Series["OGRENCI"].Points.Add(oy4); //x ekseninde öğrenci isimlerini belirleme chart1.Series["OGRENCI"].Points[0].AxisLabel = label1.Text; chart1.Series["OGRENCI"].Points[1].AxisLabel = label2.Text; chart1.Series["OGRENCI"].Points[2].AxisLabel = label3.Text; chart1.Series["OGRENCI"].Points[3].AxisLabel = label4.Text; //Sütun renklerini belirleme chart1.Series["OGRENCI"].Points[0].Color = Color.Aqua; chart1.Series["OGRENCI"].Points[1].Color = Color.Chocolate; chart1.Series["OGRENCI"].Points[2].Color = Color.Orange; chart1.Series["OGRENCI"].Points[3].Color = Color.RoyalBlue; chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -70; // Öğrenci isimleri Dikey chart1.BackColor = Color.YellowGreen;//Arka Plan rengi } |
Şimdi de Grafiğimize bir başlık vererek biçimlendireceğiz.
Alttaki resmin üzerine tıklayarak büyütülmüş halini inceleyebilirsiniz.
Bu pencereyi açmak için chart1 üzerine tıkladıktan sonra Properties penceresinden Titles özelliğinin yanındaki “…” butonuna tıklıyoruz. Burada açılan pencerede Add butonuna tıklıyoruz. Daha sonra sağ tarafta açılan özellikler penceresinde Text özelliğine istediğimiz Grafik başlığını yazıyoruz.
Yine bu bölümde başlık rengi (ForeColor), başlık fontu(Font), başlık arka plan rengi(BackColor) gibi özelliklere de ulaşabilirsiniz.
Projemizi çalıştıralım.
Şimdi de projemize eklediğimiz Sütun Grafiğin Pasta (Pie) Grafiğe nasıl çevrileceğine bakalım.
Bu işlem için yine Properties penceresinde Series özelliğini kullanacağız.
ChartType özelliğini Pie yaptığımız zaman grafiğimiz Pasta Grafik haline dönüşecektir.
merhabalar ben geliştirdiğim bir projede devexpress 3d pie kullandım form başlatıldıktan sonra chartın yükseklik ve genişliğini textboxlarla kontrol etmek ve dilimleri dışarı çıkarma gibi işlemler yapmak istiyorum da bunu nasıl ayarlayabilirim yardımcı olursanız sevinirim teşekkürler
Tek sütunlu bir grafik yapmak istiyorum. ve y ekseni başlangıç ve bitiş değerini kendim belirlemek istiyorum.
örnek başlangıç 18 bitiş 19
interval değerini 0,001 olarak ayarlamak istiyorum nasıl yapabilirim.
Tek sütunlu bir grafik yapmak istiyorum. ve y ekseni başlangıç ve bitiş değerini kendim belirlemek istiyorum.
örnek başlangıç 18 bitiş 19
interval değerini 0,001 olarak ayarlamak istiyorum nasıl yapabilirim.
chart1.ChartAreas[0].AxisY.Maximum = 19.000;
chart1.ChartAreas[0].AxisY.Minimum = 18.000;
chart1.ChartAreas[“ChartArea1”].AxisY.Interval = 0.001;
Çok güzel anlatmışsınız.Teşekkürler fakat bir sorum olacak girdiğimiz ve kaydettiğimiz grafik bilgilerini veritabanından çekmek istesek nasıl yapabiliriz.Tekrardan teşekkür ederim
Merhaba, Çok güzel bir anlatım. Yalnız bir şey soracağım. Alınan oy değerleri decimal olursa nasıl bir yol izlemeliyiz? Örnek sadece int kabul ediyor.
Çok güzel anlatmışssınız.Emeğinize sağlık.
Xamarin eğitimleri de vericek misiniz
Haziran Temmuz gibi başlayabilirim.