Autor Beitrag
lapadula
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Sa 12.11.16 19:42 
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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 13.11.16 12:22 
Dann nimm 25 und 75 (also 100 - 25)...
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: 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:
ausblenden 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.
Einloggen, um Attachments anzusehen!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 13.11.16 15:51 
- Nachträglich durch die Entwickler-Ecke gelöscht -
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: 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
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 14.11.16 15:02 
- Nachträglich durch die Entwickler-Ecke gelöscht -