Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Canvas aus Textdatei (https://www.delphipraxis.net/194023-canvas-aus-textdatei.html)

A.Griffin 9. Okt 2017 09:06

Canvas aus Textdatei
 
Hallo zusammen,

ich muss folgendes realisieren und habe noch keine Idee dazu. Ich muss für verschiedene Druckvorlagen Rechteecke, Linien und und Text auf ein Canvas zeichnen. Jetzt müsste ich Textdateien erstellen mit den Informationen für das Zeichnen (vorlage1.txt, vorlage2.txt u.s.w.) und diese in Delphi einlesen und das Canvas daraus zeichnen. Dafür brauche ich:
-Eine schlaue Formatierung der Textdateien um möglichst übersichtlich die Informationen da drin zu haben
-Eine Methode diese Textdateien einzulesen und zu zeichnen

Wurde in dem Stil schon einmal etwas gemacht oder hat jemand eine Idee dazu?

TiGü 9. Okt 2017 10:04

AW: Canvas aus Textdatei
 
Der Grund für die Textdateien ist, damit menschliche Benutzer die im Texteditor editieren können?

A.Griffin 9. Okt 2017 10:22

AW: Canvas aus Textdatei
 
Ja, das ist richtig. Ich habe jetzt angefange. Ich habe jetzt ein Reihe von Kürzeln festgelegt und habe angefangen die Textdatei zu erstellen. z.B PW für Pen.Width und TO für Canvas.Textout. Ich versuche das dann einzuladen. Ich muss mir noch die Trennung durch den Kopf gehen lassen. Habe jetzt alles mit ";" beendet.

Steku 9. Okt 2017 10:32

AW: Canvas aus Textdatei
 
Hi,

keine Ahnung was du für Textmengen als TextOut in deinen Dateien speichern musst,
aber wenn es sich nur geringe Mengen/einzelne Strings handelt wäre evtl. auch der
Blick auf TIniFile und TMemIniFile lohnenswert. http://docwiki.embarcadero.com/RADSt...File_verwenden

Beispiele sollten sich in der DP massig finden lassen.

Grüße
Steku

Luckie 9. Okt 2017 11:28

AW: Canvas aus Textdatei
 
Warum so kryptische Abkürzungen? schreib es doch aus.

mensch72 9. Okt 2017 11:59

AW: Canvas aus Textdatei
 
https://de.wikipedia.org/wiki/Scalable_Vector_Graphics

und warum nicht gleich SVG als Standardformat benutzen... da gab es hier zuletzt auch nen schicken kleinen Parser dazu:)

p80286 9. Okt 2017 12:00

AW: Canvas aus Textdatei
 
Wofür soll das gut sein?
Es gibt Seitenbeschreibungssprachen wie Sand am Meer. Von Postscript bis zu der HP-Sprache. Ebenso gibt es Treiber dafür. Ebenso gibt es für Textverarbeitungsprogramme Templates mit denen man ggf. Macro gesteuert Ausgaben generieren kann. Warum das Rad neu erfinden?

Gruß
K-H

A.Griffin 9. Okt 2017 13:24

AW: Canvas aus Textdatei
 
Vielen Dank für die vielen Antworte. Ich habe es jetzt so gemacht, dass ich procedures habe die bestimmte Formen zeichnen und übergebe immer x und y Koordinaten. Jetzt mache ich eine Text Datei wo ich der Reihe nach die Formen mit gewünschten x und y Koordinaten habe.

himitsu 9. Okt 2017 19:13

AW: Canvas aus Textdatei
 
Wenn du diese Prozeduren schon hast, dann kannste damit z.B. sowas wie PascalScript füttern. (gibt es auch mit anderen Programmier-/Scriptsprachen)
Dann kannst'e dir das als Programm-Skript ablegen, so als wäre es de Inhalt einer Prozedur.

Delphi-Quellcode:
TextColor(clRed); //TextColor($0000FF);
TextOut(10, 20, 'abc');
Line(10, 30, 50, 30);
...
Also statt den Text selber zu Parsen und deine Funktionen aufzurufen, kannst'e das auch machen lassen. :stupid:

Redeemer 9. Okt 2017 21:54

AW: Canvas aus Textdatei
 
Ich schließe mich mensch72 an: SVG ist hier die Lösung. Man muss das Rad nicht neu erfinden – gerade wo jetzt jemand dafür einen Parser geschrieben hat. :stupid: Diese Klasse macht auch nichts anderes als diejenigen SVG-Elemente und Styles, zu denen es einen äquivalenten GDI-Befehl gibt (genaue Dokumentation liegt bei), in einen solchen umzusetzen (TCanvas von Delphi kapselt nicht alle Befehle von GDI, daher ruft die Klasse GDI direkt auf).


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz