Autor |
Beitrag |
gerd8888
Beiträge: 205
Erhaltene Danke: 3
Win7
Delphi 10.1 Starter (kostenlos) Lazarus
|
Verfasst: Do 14.03.13 22:00
Hallo,
ich würde gerne ein Kreis-Diagramm bzw. Kuchendiagramm oder einzelne Segmente in canvas darstellen.
Mit canvas.elipse kann ich zwar einen Kreis zeichnen aber die einzelnen Prozente dann nicht mehr trennen.
Ich stelle mir das etwas komplizierter vor. Muss man die Vektorgrafik vielleicht selbt irgendwie mit cos(a)
arbeiten.
So ein Diagramm was man z.B. bei der Bundestagswahl sieht mit Prozenten, das suche ich.
Hat da vielleicht schon jemand etwas fertiges?
|
|
Jann1k
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Do 14.03.13 23:01
Etwas fertiges dazu kann ich nicht anbieten, aber TCanvas besitzt die Methode Arc. Damit kannst du Kreisbögen zeichnen.
€: Eben nachgeschaut, es gibt sogar die Methode Pie, die zeichnet direkt das ganze Kuchenstück.
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 14.03.13 23:26
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
gerd8888
Beiträge: 205
Erhaltene Danke: 3
Win7
Delphi 10.1 Starter (kostenlos) Lazarus
|
Verfasst: Fr 15.03.13 19:34
Hallo,
ich konnte jetzt das Problem lösen. Weiss aber nicht, ob es noch einfacher geht?
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: 40: 41: 42: 43: 44: 45:
| procedure kreissegment(w1,w2:real; f1,f2,f3:byte); var Pi,winkel,grad1,grad2:real; m,r,h,w,x1,y1,x2,y2:integer;
begin
Pi := 3.14159268; m := 100; r := 50 ; h := 200; w := 200; grad1 := -90+w1; winkel := pi*grad1/180; x1 := Trunc(Cos(winkel)* r) + m; y1 := Trunc(Sin(winkel)* r) + m;
grad2 := grad1+w2; winkel := pi*grad2/180; x2 := Trunc(Cos(winkel)* r)+m; y2 := Trunc(Sin(winkel)* r)+m;
statistik1.Canvas.Pen.Color := 0; statistik1.canvas.Brush.Color := rgb(f1,f2,f3); statistik1.Canvas.Pie(10,10,h-10,w-10,x2,y2,x1,y1); end;
function prozent_to_winkel(prozent:real):real; begin prozent_to_winkel:=360*prozent/100 end;
procedure Tstatistik1.Button1Click(Sender: TObject); begin kreissegment(0,prozent_to_winkel(33.33),0,0,255); kreissegment(prozent_to_winkel(33.33),prozent_to_winkel(33.33),0,255,0); kreissegment(prozent_to_winkel(66.66),prozent_to_winkel(33.33),255,0,0); end; |
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 16.03.13 18:30
- Nachträglich durch die Entwickler-Ecke gelöscht -
Für diesen Beitrag haben gedankt: Horst_H
|
|
gerd8888
Beiträge: 205
Erhaltene Danke: 3
Win7
Delphi 10.1 Starter (kostenlos) Lazarus
|
Verfasst: So 17.03.13 17:12
Hallo Frühlingsrolle,
ich wollte das Beispiel ausprobieren.
Das chart1 bzw. chart was dahinter steht unterstreicht mein delphi 2009 rot. Obwohl ich die 2 units eingebunden habe.
Wenn ich statt chart1 nur chart. hernehme unterstreicht er mir das nicht rot, aber das was dahinter steht.
Ich konnte es demnach nicht compilieren.
Gerd
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 17.03.13 17:31
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
gerd8888
Beiträge: 205
Erhaltene Danke: 3
Win7
Delphi 10.1 Starter (kostenlos) Lazarus
|
Verfasst: So 17.03.13 18:07
Hallo Frühlingsrolle,
jetzt habe ich das Tchart in die Form platziert und es hat funktioniert.
Ich bekomme ein Kreisdiagramm und oben rechts noch mit der Schrift die dazugehoerige Farbe.
Ja, so wie ich es wollte.
Danke
Gerd
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 17.03.13 18:40
- Nachträglich durch die Entwickler-Ecke gelöscht -
Für diesen Beitrag haben gedankt: gerd8888
|
|
Horst_H
Beiträge: 1652
Erhaltene Danke: 243
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: Mo 18.03.13 10:32
Hallo,
@gerd8888:
ich fand Deine Version etwas statisch in Bezug auf die Koordinaten.
Auf beispielsweise stackoverflow.com/qu...all-the-pie-function steht es beschrieben, wie man es allgemeiner lösen kann.
Ich habe es etwas umgestrickt und in Lazarus umgesetzt.
Die TChart Lösung ist aber sicher viel fexibler und einfacher in der Handhabung.
Gruß Horst
Einloggen, um Attachments anzusehen!
Für diesen Beitrag haben gedankt: gerd8888
|
|
gerd8888
Beiträge: 205
Erhaltene Danke: 3
Win7
Delphi 10.1 Starter (kostenlos) Lazarus
|
Verfasst: Mo 18.03.13 14:27
Hallo Horst,
naja gut, das ist eine kleine Spielerei. Ich musste das RequireDerivedFormResource := True; löschen, dann konnte ich es mir auch auf Lazerus ansehen.
Die Sachen mit dem Objektinspektor habe ich mir auch angesehen. Da kann man wirklich unglaublich viel machen.
Ich glaube mit view3d:=true und kreisdiagramm bin ich ganz glücklich.
Ist ja auch nur eine kleine Statistik (Auskunft über meine Video-dateien), die ich machen wollte.
Gerd
|
|