Autor Beitrag
lapadula
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72
Erhaltene Danke: 1



BeitragVerfasst: Sa 12.11.16 18: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: 3355
Erhaltene Danke: 620

Win7
C++, C# (VS 2010/12/13/15)
BeitragVerfasst: So 13.11.16 11:22 
Dann nimm 25 und 75 (also 100 - 25)...
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 829
Erhaltene Danke: 127

Win7
VS 2013, VS2015
BeitragVerfasst: So 13.11.16 14: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1041
Erhaltene Danke: 150

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: So 13.11.16 14:51 
Vielleicht noch in Zeile 10:

ausblenden C#-Quelltext
1:
chart1.Series[0].Points[0].BorderColor = Color.White;					

Dann ist nur noch der Kreissektor sichtbar.

_________________
„Nicht für das Leben, sondern für die Schule lernen wir.“ „Kürze die lange Rede, damit sie nicht verdächtig wirke!“
(Lucius Annaeus Seneca : 1 - 65 n. Chr)
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 829
Erhaltene Danke: 127

Win7
VS 2013, VS2015
BeitragVerfasst: So 13.11.16 15: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.

Für diesen Beitrag haben gedankt: Frühlingsrolle
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72
Erhaltene Danke: 1



BeitragVerfasst: Mo 14.11.16 09: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1041
Erhaltene Danke: 150

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mo 14.11.16 14:02 
@ jfheins

Danke für die Erklärung. Ich bin davon ausgegangen, dass der Kreis bei jeder Gelegenheit gezeichnet wird. Na umso besser.

_________________
„Nicht für das Leben, sondern für die Schule lernen wir.“ „Kürze die lange Rede, damit sie nicht verdächtig wirke!“
(Lucius Annaeus Seneca : 1 - 65 n. Chr)