Moin,
ich habe hier ein Projekt, bei dem ich Objekte in einem pdf platzieren muß. Genauer: ein Familienstammbaum, Größe DIN A1.
Bisher war das ganze ein manuell erstelltes php-script mit hartcodierten Positionen.
Also auf Pascal umschreiben.
So weit, so gut; aber jetzt möchte ich diese Objekte vorab grafisch anordnen. Der Versuch, das im Canvas einer Paintbox zu machen, klappt schon mal.
Jetzt möchte ich diese Paintbox zoomen.
OK, Paintbox in eine Scrollbox gepackt und???
Muß ich jetzt die Paintbox vergrößern/kleinern und die Schrift/Rechtecke/Linien auch?
Oder gibt es da fertige Zoom-Funktionen?
Letztlich bin ich auch nicht auf die Paintbox angewiesen. Es ist nur recht einfach, dort ein Objekt anzuklicken, nach dem nächsten neuzeichnen rot zu färben und dann zu verschieben.
Paintbox zoomen
-
- Lazarusforum e. V.
- Beiträge: 288
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Paintbox zoomen
just my two Beer
Re: Paintbox zoomen
Hallo,
ich würde hier an der Stelle LaTeX mit dem entsprechenden Paket genealogytree empfehlen.
Lass Pascal dir den LaTeX-Code erstellen und nutze dann LaTeX für die PDF-Datei.
Viele Grüße!
ich würde hier an der Stelle LaTeX mit dem entsprechenden Paket genealogytree empfehlen.
Lass Pascal dir den LaTeX-Code erstellen und nutze dann LaTeX für die PDF-Datei.
Viele Grüße!
-
- Beiträge: 6955
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Paintbox zoomen
Bei GITHUB ist sowas auch schon eingebaut. Somit müsste es dies schon fertig geben.Genauer: ein Familienstammbaum, Größe DIN A1.
https://github.com/sechshelme/Lazarus-F ... ss_Tree.md
Evtl. nützt da Cairo Graphics. FPC hat schon einen Header dafür.Jetzt möchte ich diese Paintbox zoomen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 609
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Paintbox zoomen
Hallo Joh,
wenn du möchtest kannst mal meinen Selector testen:
Finden kannst ihn hier:
https://github.com/wennerer/TheOthers
Kleines Testprojekt mit Paintbox angehängt.
Viele Grüße
Bernd
wenn du möchtest kannst mal meinen Selector testen:
Finden kannst ihn hier:
https://github.com/wennerer/TheOthers
Kleines Testprojekt mit Paintbox angehängt.
Viele Grüße
Bernd
- Dateianhänge
-
project1.zip
- (139.91 KiB) 63-mal heruntergeladen
-
- Lazarusforum e. V.
- Beiträge: 288
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: Paintbox zoomen
Moin,ArchChem hat geschrieben: Sa 20. Apr 2024, 07:49 Hallo,
ich würde hier an der Stelle LaTeX mit dem entsprechenden Paket genealogytree empfehlen.
Lass Pascal dir den LaTeX-Code erstellen und nutze dann LaTeX für die PDF-Datei.
Viele Grüße!
ja, grundsätzlich passt die Ausgabe... Aber genau bei den Überschneidungen wollte ich ansetzen. Daher die zusätzliche manuelle Ebene zum verteilen der Personen.
Die Struktur soll ählich dieser aussehen, und da gibt es IMHO erstmal nur die manuell-visuelle Komponente... Ich bin gerade einen kleinen Schritt weiter, werde mir aber erstmal die anderen Ideen testen.
just my two Beer
-
- Lazarusforum e. V.
- Beiträge: 288
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: Paintbox zoomen
Beim Projekt von Mathias sind die Linien auch nicht so, wie ich es mir vorstelle.
Die Idee von Wennerer ist ja eher eine Idee zur Grafikbearbeitung. Klingt gut, ist abgespeichert, aber passt gerade nicht zum Projekt.
Meine aktueller Plan:
i) ich nehme einen anderen PDF-Renderer: Sumatra PDF; der sperrt die PDF-Datei nicht und zeichnet neu, wenn sich in der PDF-Datei etwas ändert.
ii) ich benutze eine andere Klasse für die pdf-Ausgabe: libjpfpdf; die erzeugt lesbare PDFs
Blöd nur, das ich rounded Rectangle manuell programmieren mußte als Linien und einzelne Bézierkurven, weils keine Kreise gibt... tztztz
Naja. Gar nicht so schwer, wenn man weiß, wie:
Den Cursor positionieren. Mache ich mit dem Zeichnen der letzten Linie: Zwei Haltepunkte setzen, den Endpunkt als Startpunkt der nächste Linie und fertig
Ist letztlich auch nur ein 30-zeiler geworden.
Die Probleme waren dabei eher typisch:
- wo sind x0, y0, x1, ..., y3 => vertauschen der Punkte mit den Haltepunkten gibt lustige Blitze statt Kreise
- Ausgabe der Zahlen mit "," statt mit "." => das PDF erzeugt wilde Striche; danke, FloatToStr()
- Die pdf-Klasse hat als Bezugspunkt oben links, pdf aber unten links; alle y-Werte müssen negativ sein !$grmbl%.
Hier ein kurzer Auszug aus der PDF-Datei mit den Daten einer Person:
Am Anfang und am Ende der Daten einer Person jeweils noch einen Kommentar mit der Personen-ID eingefügt: % @I12935@ INDI (Gedcom-Notation)
Damit habe ich einen guten Ausgangspunkt, alle x-Werte einer Person zu verändern
Das funktioniert in einer ersten Demo schon ganz gut.
Also ein Spielobjekt auf dem Canvas zur Auswahl und das Ergebnis nach dem Speichern direkt im PDf angezeigt.
iii) Jetzt fehlen nur noch die Linien für die Ehen und die Kinder...
Aber das ist ja Fleißarbeit.
Die Idee von Wennerer ist ja eher eine Idee zur Grafikbearbeitung. Klingt gut, ist abgespeichert, aber passt gerade nicht zum Projekt.
Meine aktueller Plan:
i) ich nehme einen anderen PDF-Renderer: Sumatra PDF; der sperrt die PDF-Datei nicht und zeichnet neu, wenn sich in der PDF-Datei etwas ändert.
ii) ich benutze eine andere Klasse für die pdf-Ausgabe: libjpfpdf; die erzeugt lesbare PDFs
Blöd nur, das ich rounded Rectangle manuell programmieren mußte als Linien und einzelne Bézierkurven, weils keine Kreise gibt... tztztz
Naja. Gar nicht so schwer, wenn man weiß, wie:
Den Cursor positionieren. Mache ich mit dem Zeichnen der letzten Linie:
Code: Alles auswählen
28 -30 l
Code: Alles auswählen
29.1 -30 30 -30.9 30 -32 c
Die Probleme waren dabei eher typisch:
- wo sind x0, y0, x1, ..., y3 => vertauschen der Punkte mit den Haltepunkten gibt lustige Blitze statt Kreise
- Ausgabe der Zahlen mit "," statt mit "." => das PDF erzeugt wilde Striche; danke, FloatToStr()
- Die pdf-Klasse hat als Bezugspunkt oben links, pdf aber unten links; alle y-Werte müssen negativ sein !$grmbl%.
Hier ein kurzer Auszug aus der PDF-Datei mit den Daten einer Person:
Code: Alles auswählen
% @I12935@ INDI
12 -30 m
28 -30 l
29.1 -30 30 -30.9 30 -32 c
30 -66 l
30 -67.1 29.1 -68 28 -68 c
12 -68 l
10.9 -68 10 -67.1 10 -66 c
10 -32 l
10 -30.9 10.9 -30 12 -30 c
S
20 -26 m 20 -30 l S
20 -68 m 20 -72 l S
BT /F1 3.18 Tf ET
BT 11 -33.954 Td (Meyer) Tj ET
BT /F2 3.18 Tf ET
BT 11 -37.954 Td (Bernhard) Tj ET
BT 11 -41.954 Td (Wilhelm) Tj ET
BT 11 -53.954 Td (* 16.1.1796) Tj ET
BT 11 -57.954 Td (Anten) Tj ET
BT 11 -61.954 Td (+ 26.6.1879) Tj ET
BT 11 -65.954 Td (Berge) Tj ET
% /@I12935@ INDI
Damit habe ich einen guten Ausgangspunkt, alle x-Werte einer Person zu verändern

Das funktioniert in einer ersten Demo schon ganz gut.
Also ein Spielobjekt auf dem Canvas zur Auswahl und das Ergebnis nach dem Speichern direkt im PDf angezeigt.
iii) Jetzt fehlen nur noch die Linien für die Ehen und die Kinder...
Aber das ist ja Fleißarbeit.
just my two Beer