Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Hallo
Kennt sich jemand mit fpPDF aus?
Ich möchte einen farbig gefüllten Pie Chart erstellen.
Ich müsste also entweder Bereiche mit Farbe füllen können oder direkt gefüllte Kreissektoren zeichnen.
Die nicht separat eingefärbten "Kuchenstücke" bekomme ich hin. Hat da jemand den Durchblick?
Nehme notfalls auch eine andere Komponente.
Kennt sich jemand mit fpPDF aus?
Ich möchte einen farbig gefüllten Pie Chart erstellen.
Ich müsste also entweder Bereiche mit Farbe füllen können oder direkt gefüllte Kreissektoren zeichnen.
Die nicht separat eingefärbten "Kuchenstücke" bekomme ich hin. Hat da jemand den Durchblick?
Nehme notfalls auch eine andere Komponente.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Hi!
Ich kenne das Ding nicht aber: Hat das einen Canvas?
Wenn nicht auf die doofe Tour:
Zeichne Linien der gewünschten Farbe von MittelPunkt-Anfangswinkel bis MittelPunkt-Endwinkel.
Nach dem Motto: Mit der Zange geht auch ne Bierflasche auf.
Winni
Ich kenne das Ding nicht aber: Hat das einen Canvas?
Wenn nicht auf die doofe Tour:
Zeichne Linien der gewünschten Farbe von MittelPunkt-Anfangswinkel bis MittelPunkt-Endwinkel.
Nach dem Motto: Mit der Zange geht auch ne Bierflasche auf.
Winni
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Mit TAChart kannst du PieCharts zeichnen. Die kannst du dann als Bitmap, PNG, SVG o.ä. speichern und ins PDF einbinden.
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
@Winni: Danke. Nein, hat keinen eigentlichen Canvas.
Ja, das könnte man probieren. Ob das am Ende "sauber" aussieht?
Ich dachte halt, es gäbe vielleicht ein Fill Kommando in PDF, welches man noch implementieren könnte.
Das PDF Format ist ja letztlich auch nur ein "Geschreibsel" à la:
@ wp_xyz: Danke. Die Grafik anderweitig zu erstellen (z.B. auch BGRABitmap) und dann einzubinden, hatte ich als Notlösung auf dem Schirm.
Im PDF als Vektorgrafik wäre aber schöner gewesen.
Ja, das könnte man probieren. Ob das am Ende "sauber" aussieht?
Ich dachte halt, es gäbe vielleicht ein Fill Kommando in PDF, welches man noch implementieren könnte.
Das PDF Format ist ja letztlich auch nur ein "Geschreibsel" à la:
Code: Alles auswählen
16 0 obj
<<
/Type /Font
/Subtype /CIDFontType2
/BaseFont /GRAEAB+Arial
/CIDSystemInfo 17 0 R
/FontDescriptor 18 0 R
/W [ 0 [750] 3 [278] 16 [333] 57 [667] 61 [611] 68 [556] 69 [556] 72 [556] 76 [222] 81 [556] 85 [333] 87 [278] 108 [556]]
/CIDToGIDMap 21 0 R
>>
endobj
Im PDF als Vektorgrafik wäre aber schöner gewesen.
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
@Winni: Ja doch, sieht vernünftig aus.
Das hätte ich nicht gedacht.
Mit "Bescheuert" kommt man schneller weiter!
Das hätte ich nicht gedacht.
Mit "Bescheuert" kommt man schneller weiter!

- Dateianhänge
-
- pdf_pie.png (10.72 KiB) 1854 mal betrachtet
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Hi!
Die Dokumentation von fpPDF ist ja mäßig bis saumäßig.
Für Deine Wünsche ist der Source von
fpcsrc/fpc-3.2.0/packages/fcl-pdf/examples/testfppdf.lpr
von Interesse.
Beim diagonalen Überliegen wurde entdeckt:
Die einfachen Formen Rectangle, RoundedRectangle, Ellipse haben einen Parameter Fill, Polygon und sonstiges nicht.
Man kann sich aber einen Pfad schnitzen und den entweder Zeichnen oder Füllen:
procedure StrokePath;
procedure FillStrokePath;
Die Syntax lehnt sich an HTML5 an.
Wieder so eine fpc-Perle, die undokumentiert in der Gosse liegt.
Winni
Die Dokumentation von fpPDF ist ja mäßig bis saumäßig.
Für Deine Wünsche ist der Source von
fpcsrc/fpc-3.2.0/packages/fcl-pdf/examples/testfppdf.lpr
von Interesse.
Beim diagonalen Überliegen wurde entdeckt:
Die einfachen Formen Rectangle, RoundedRectangle, Ellipse haben einen Parameter Fill, Polygon und sonstiges nicht.
Man kann sich aber einen Pfad schnitzen und den entweder Zeichnen oder Füllen:
procedure StrokePath;
procedure FillStrokePath;
Die Syntax lehnt sich an HTML5 an.
Wieder so eine fpc-Perle, die undokumentiert in der Gosse liegt.
Winni
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Klar, sonst wäre ich gar nicht so weit gekommen.Winni hat geschrieben: Mo 17. Jan 2022, 16:55 Für Deine Wünsche ist der Source von
fpcsrc/fpc-3.2.0/packages/fcl-pdf/examples/testfppdf.lpr
von Interesse.
Andere Informationen als dieses Beispiel gibt es ja nicht.
Habe ich auch gesehen, aber nicht begriffen, wie man das auf einen Kreissektor anwenden könnte.
Bin erst einmal zufrieden. Der PDF-Pie steht.
Danke!
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
P.S. Es gibt natürlich auf diese Weise schon ein Problemchen.
Da es kein Bitmap ist, enthält das PDF natürlich Zeichenanweisungen für jeden Strich, den ich mache.
Nun muss ich natürlich ausreichend Striche zeichnen, damit das ganze gefüllt und nicht wie ein Stern aussieht.
Bei einer Stroke Dicke von 1.0 gibt es in der Mitte des Kuchens einen Versatz zwischen den Linien, der hässlich aussieht.
Wenn ich die Strichdicke 0.1 mache, ist dieser Versatz kaum noch sichtbar, aber dann muss ich noch mehr Linien zeichnen, damit alles bedeckt ist.
Bei 1000 Linien z.B. merkt man das im PDF Reader durch ein Lagging. Der "Pie" baut dann langsamer auf.
Da es kein Bitmap ist, enthält das PDF natürlich Zeichenanweisungen für jeden Strich, den ich mache.
Nun muss ich natürlich ausreichend Striche zeichnen, damit das ganze gefüllt und nicht wie ein Stern aussieht.
Bei einer Stroke Dicke von 1.0 gibt es in der Mitte des Kuchens einen Versatz zwischen den Linien, der hässlich aussieht.
Wenn ich die Strichdicke 0.1 mache, ist dieser Versatz kaum noch sichtbar, aber dann muss ich noch mehr Linien zeichnen, damit alles bedeckt ist.
Bei 1000 Linien z.B. merkt man das im PDF Reader durch ein Lagging. Der "Pie" baut dann langsamer auf.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Hi!
Kenn ich aus frühen Corel-Draw-Versionen, wenn man einen PDF-Export getätigt hatte und vorher z.B. was extrudiert hatte. Da wurde ALLES exportiert und nicht nur, was sichtbar war. Haben wir manchmal den Belichter in der Druckerei gecrasht ....
Aber zu dem Pfad in fpPDF
* die TPDFCoord snd auch nur ein TPointF, also zwei Singles
* Die TPDFPage müsste so damit umgehen:
- ResetPath;
Ein Polygon = APoints: array of TPDFCoord bauen :
MittelPunkt - AnfangswinkelPunkt
Dann ein Punkt für jedes Grad zwischen Anfangswinkel und Endwinkel
Mittelpunkt (theoretisch nicht notwendig - aber wer weiss ....
Danach DrawPolygon
closePath
Dann entweder
StrokePath oder
Fillstrokepath
fertig
Natürlich noch Farben, PenStyle, lineStyle usw. setzen
So geht das jedenfalls in HTML5 und BGRAcanvas2D der sich an HTML5 anlehnt.
Ich würde mir ne Procedure Pie bauen:
Oder so ähnlich.
Winni
Kenn ich aus frühen Corel-Draw-Versionen, wenn man einen PDF-Export getätigt hatte und vorher z.B. was extrudiert hatte. Da wurde ALLES exportiert und nicht nur, was sichtbar war. Haben wir manchmal den Belichter in der Druckerei gecrasht ....
Aber zu dem Pfad in fpPDF
* die TPDFCoord snd auch nur ein TPointF, also zwei Singles
* Die TPDFPage müsste so damit umgehen:
- ResetPath;
Ein Polygon = APoints: array of TPDFCoord bauen :
MittelPunkt - AnfangswinkelPunkt
Dann ein Punkt für jedes Grad zwischen Anfangswinkel und Endwinkel
Mittelpunkt (theoretisch nicht notwendig - aber wer weiss ....
Danach DrawPolygon
closePath
Dann entweder
StrokePath oder
Fillstrokepath
fertig
Natürlich noch Farben, PenStyle, lineStyle usw. setzen
So geht das jedenfalls in HTML5 und BGRAcanvas2D der sich an HTML5 anlehnt.
Ich würde mir ne Procedure Pie bauen:
Code: Alles auswählen
procedure pie (Center: TPDFCoord, radius: single; color: TColor; StartAngle, StopAngle: Integer);
Oder so ähnlich.
Winni
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
@Winni: Danke für den Tipp.
Ja so könnte es tatsächlich klappen und das wäre wesentlich sauberer.
Ich dachte zuerst, dieser Weg wäre mir zu kompliziert, aber wenn man es "richtig" lösen will, dann muss das wohl so.
Ein erster Test schaut schon vielversprechend aus:
Ja so könnte es tatsächlich klappen und das wäre wesentlich sauberer.
Ich dachte zuerst, dieser Weg wäre mir zu kompliziert, aber wenn man es "richtig" lösen will, dann muss das wohl so.
Ein erster Test schaut schon vielversprechend aus:
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Hi!
Na geht doch!
Die HTML5 Syntax ist echt gewöhnungsbedürftig und sehr anders als das, was man sonst von Grafik-Bibliotheken kennt.
Aber wenn man sich dran gewöhnt hat, ist es in sich schlüssig.
Was noch fehlt ist der Paramer "clockwise" und "counterclockwise", kurz cw oder ccw.
Will meinen: Zählen wir die Winkel mit der Uhr oder andersrum. Da herrscht große Uneinigkeit. Die Canvas.font.orientation läuft z.B. gegen die Uhr.
Winni
Na geht doch!
Die HTML5 Syntax ist echt gewöhnungsbedürftig und sehr anders als das, was man sonst von Grafik-Bibliotheken kennt.
Aber wenn man sich dran gewöhnt hat, ist es in sich schlüssig.
Was noch fehlt ist der Paramer "clockwise" und "counterclockwise", kurz cw oder ccw.
Will meinen: Zählen wir die Winkel mit der Uhr oder andersrum. Da herrscht große Uneinigkeit. Die Canvas.font.orientation läuft z.B. gegen die Uhr.
Winni
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Mittlerweile sieht es vernünftig aus.
Mit DrawPolyLine und FillStrokePath funktioniert das zufriedenstellend.
Beschriftung wird auch so langsam.
Mit DrawPolyLine und FillStrokePath funktioniert das zufriedenstellend.
Beschriftung wird auch so langsam.

- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Hi!
Sehr schön!
Aber Kalender-Reform? Ohne "Tanz in den Mai"???
Und bittesehr:
Jan: kaltes hellblau
Feb: Karnevals-Orange
Mar: lindgrün
Apr : sattgrün
....
Winni
Sehr schön!
Aber Kalender-Reform? Ohne "Tanz in den Mai"???
Und bittesehr:
Jan: kaltes hellblau
Feb: Karnevals-Orange
Mar: lindgrün
Apr : sattgrün
....
Winni
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
Vom Mai haben wir keine Daten.
Und das war das Corona Jahr 2021. Grau in Grau trifft's doch.
Und das war das Corona Jahr 2021. Grau in Grau trifft's doch.

-
- Beiträge: 219
- Registriert: Mo 3. Jan 2011, 13:34
- OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
- CPU-Target: 64Bit
- Wohnort: Nürnberg
Re: Kreisdiagramm bzw. farbige Kreissektoren mit fpPDF
@theo: Gibt's zu dem pdf_pie4_poly_text.png auch den Lazarus/FPC Quellcode zum Download?