Entwickler-Ecke

Basistechnologien - Pie Chart Control


lapadula - Sa 12.11.16 19:42
Titel: Pie Chart Control
Hallo,

ich versuche gerade ein Kuchendiagramm richtig darzustellen. Alles recht simpel, trotzdem komme ich nicht drauf.

Ich möchte einen Prozentsatz darstellen, nur einen. Wie kann ich dem Chart einen statischen Wert von 100 zuweisen, damit ich dem z. B. 25 übergebe und er diese dann darstellt.

Ein Beispiel wie es nicht funktioniert :D Er bekommt den Wert 100 und 25. Was er macht, er addiert die beiden Werte zusammen und zeigt 100 von 125 und 25 von 125 im Chart als Prozentsätze an. Ich möchte halt nur optisch den Kuchen 1/4 gefüllt sehen.


C#-Quelltext
1:
2:
3:
4:
chart2.Series[0].Points.Clear();
chart2.Series["Test"].Label = "#PERCENT";
chart2.Series["Test"].Points.AddY(100);
chart2.Series["Test"].Points.AddY(25);


Th69 - So 13.11.16 12:22

Dann nimm 25 und 75 (also 100 - 25)...


jfheins - So 13.11.16 15:42

Das geht offenbar nicht direkt, das Steuerelement summiert immer alle Punkte auf und definiert das als 100%.

Du kannst es aber so stylen, dass es richtig aussieht ;-) Zum Beispiel:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
            chart1.Series[0].Points.Clear();
            chart1.Series[0].Label = "#PERCENT";
            chart1.Series[0].Points.AddY(75); // Leerraum sollte der erste Punkt sein, damit der Rand davon zuerst gemalt wird
            chart1.Series[0].Points.AddY(25);
            // leeren Raum stylen
            chart1.Series[0].Points[0].IsVisibleInLegend = false;
            chart1.Series[0].Points[0].Color = Color.Transparent;
            chart1.Series[0].Points[0].IsValueShownAsLabel = false;
            chart1.Series[0].Points[0].Label = "";
            chart1.Series[0].Points[0].BorderColor = Color.Gray;
            chart1.Series[0].Points[0].BorderDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Dash;
            // Eigentliche Daten
            chart1.Series[0].Points[1].BorderColor = Color.Black;
            chart1.Series[0].Points[1].BorderWidth = 4;
            chart1.Series[0].Points[1].BorderDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Solid;

Sieht dann so aus:
bsp

Den ganzen Kram kannst du natürlich in eine Funktion auslagern, der du dann nur noch den Namen und Prozentsatz übergibst und die dann selbsständig das "leere" Stück ausrechnet und stylt.


Delete - So 13.11.16 15:51

- Nachträglich durch die Entwickler-Ecke gelöscht -


jfheins - So 13.11.16 16:26

Kommt halt drauf an, was man möchte. Wenn du den leeren Teil gar nicht sehen willst, kannst du die zwei Zeilen, wo der Rand definiert wird, (10 & 11) einfach weglassen.


lapadula - Mo 14.11.16 10:07

Vielen Dank!

Dachte dafür gäbe es eine Property.

An dieses workaround habe ich auch kurz gedacht, wollte es aber nicht wahrhaben, dass es anders nicht zu lösen ist, da das Control doch recht viele Eigeschaften besitzt. :D


Delete - Mo 14.11.16 15:02

- Nachträglich durch die Entwickler-Ecke gelöscht -