Zeitgemäße Verktorgrafik in Delphi

    Zeitgemäße Verktorgrafik in Delphi

    Hallo zusammen,

    ich habe mal wieder einen klassischen Fall von "man wächst mit seinen Aufgaben".

    Ich habe eine Klasse. In dieser Klasse gibt es unter anderem Methoden mit der Ausgaben auf einer Zeichenfläche (TCanvas - "Bildschirm" bzw. Drucker) generiert werden. Da die Zeichenflächen unterschiedlich groß und breit sind, werden bei der Ausgabe, Ansätze aus dem Bereich der Vektorgrafik verwendent ... sprich es wird mit MoveTo, LineTo, Polygonen usw. gearbeitet und es werden dabei jeweils Prozentanteile der jeweiligen verfügbaren Zeichenfläche genutzt.

    Inzwischen sind wir zu dem Schluss gekommen, dass die so entstandenen Skizzen nicht mehr zeitgemäß sind. Der Detailierungsgrad der Skizzen soll (im vergleich zum bisherigen "Standard") extrem Detailiert werden.
    Für mich ergibt sich daraus der Schluss, dass es einfach nicht mehr praktikabel ist die Skizzen "per Quelltext" zu zeichnen. Die Alternative sind für mich an dieser Stelle Vektorgrafik Formate.

    Interessanterweise ist ein großteil der Treffer/Forumsbeiträge etc. zu diesem Thema alt bis sehr alt (2003-2007) [auch über Google].
    Ich kann mir nicht vorstellen, dass das Prinzip der Vektorgrafik an sich veraltet ist. (Möglicherweise belehrt ich mich aber gleich eines besseren)

    Ich bin somit also auf der Suche nach einer Komponente, die es auch für aktuelle Delphi Versionen (Delphi 2010/Delphi XE) noch gibt und mit der gängige Vektorgrafik Formate geladen und (relativ einfach) auf TCanvas Zeichenflächen ausgegeben werden können.

    Bei dem Punkt "gängiges Vektorgrafik Format" bin ich mir aber noch nicht ganz schlüssig, welches das ist. Es sollte ein "Austausch" Format sein, das von vielen Grafikanwendungen und eben auch der Komponente unterstütz wird. Welche "Dateiendung" dieses Format dann aber trägt *Achselzucken*. Eingangs hätte ich jetzt SVG in den Raum geworfen, bin mir inzwischen aber nicht mehr ganz sicher.

    Gern höre ich mir aber auch "komplett andere" Ansätze an (solange das Endergebniss eine Ausgabe auf einer TCanvas Zeichenfläche beinhaltet)

    Gruß LoNi
    WENN 'Wer dumm frägt kriegt ne dumme Antwort.' = 'Wer nicht frägt bleibt dumm.' DANN ...???
    Hallo LoNi,

    mir fällt da auf Anhieb Windows MetaFile (bzw. Enhanced Metafile) ein, weil ich dieses Format auch als Vektorgrafik im Einsatz habe.
    secure.wikimedia.org/wikipedia/de/wiki/Windows_Metafile
    secure.wikimedia.org/wikipedia/en/wiki/Windows_Metafile

    Die notwendigen Klassen bringt Delphi gleich mit. [DR]TMetaFile[/DR] und [DR]TMetaFileCanvas[/DR]

    Viele Grüße
    MAC
    "Wege entstehen dadurch, dass man sie geht." (Franz Kafka)
    Ich kann mir nicht vorstellen, dass das Prinzip der Vektorgrafik an sich veraltet ist.


    Ist es wohl nicht, jedenfalls in Teilbereichen. So wird zB CAD ausschliesslich mit Vektorgrafik realisisert (PDF könnte man auch als solche bezeichnen). In anderen Bereichen ist sie eher seltener eingesetzt.

    Und da liegt wohl auch dein Problem: das alte WMF-Format ist ziemlich rudimentär und für komplexe Einsätze kaum geeignet. Also haben die Entwickler sich darauf besonnen, eigene Formate zu entwickeln, die für die eigenen Aufgabenstellungen optimiert sind. Und sie halten die Rechte daran, die sie nur in seltenen Fällen zur Verfügung stellen. Daher wird es vermutlich ziemlich schwierig, eine solche wie von dir gewünschte Komponente zu finden (zumindest eine kostenlose).

    cckLoud
    Soweit schon mal danke für die ersten Anmerkungen.

    Die Komponente muss nicht kostenlos sein. Sofern sie das liefert was wir wollen, und wir dann sonst damit keine "große Arbeit" haben, darf da ruhig auch eine Zahl dahinter stehen.

    Die Themen MetaFile bzw. MetaFileCanvas sind mir bei meinen Recherchen auch schon unter gekommen. Ich habe mich dort vorerst nicht weiter eingelesen, weil wir an dieser Stelle nicht das Rad neu erfinden wollen.

    Sprich wir wollen nicht erst einen Editor entwickeln mit dem wir dann die Grafiken erstellen und speichern, nur um sie dann später laden zu können. Grafikbearbeitungsprogramme gibt es bereits viele und vermutlich auch gute ;-).

    Aus aktuellem Anlass (nicht Delphi bezogen) hatte ich gerade die Möglichkeit einen Blick auf Corel X4 zu werfen. Es ist nicht die neueste Version von Corel aber dort gab es unter anderem immer noch die Erwähung des Dateiformats "SVG"

    Soweit ich weiß hatte das doch zuletzt Adobe unter seiner Fuchtel. Weiß nur nicht ob die nur einen "allgemeinen" [und 2008 eingestampften] SVG-Viewer hatten oder ob sich auch am SVG Format selber beteiligt waren.

    Ich hab auch eine ältere Delphi Komponete gefunden die zumindest der Beschreibung nach das abdeckt, was wir benötigen.
    development.mwcs.de/svgimage.html

    Die Version ist aber schon älter und wird aus vielen zusätzlichen Einzelmodulen zusammengestückelt. Von daher gefühlsmäßig nicht unbedingt unsere erste Wahl, da wir mit einer externen Komponente ja eine gewisse "Abhängigkeit" eingehen.

    Die Kopmponenten von flex-graphics.com/info.html scheint mir da schon wesentlich besser (wurde vor kurzem scheinbar eine Delphi XE geeignete Version freigegeben). Informationen zum SVG Format hab ich dort aber auf die Schnelle nicht ausgemacht.

    Naja, die Suche geht weiter.
    WENN 'Wer dumm frägt kriegt ne dumme Antwort.' = 'Wer nicht frägt bleibt dumm.' DANN ...???
    SVG ist ein Standard des W3C ebenso wie HTML. Demnach gibt es keinen alleinigen oder ursprünglichen Hersteller, genauso wenig wie einen "offiziellen Viewer". Es gibt ja auch keinen "offiziellen Browser" oder auch nur HTNL-Renderer. Das W3C standardisiert nur. Implementierung ist dann Sache von anderen.

    Zum Erstellen von SVG-Dateien bietet sich Inkscape an und zum Betrachten reicht ein halbwegs aktueller Browser. SVG ist definitiv aktuell und wird IMHO auch so schnell nicht verschwinden, sondern eher an Bedeutung gewinnen. So zumindest mein Eindruck. Du kannst dir ja auch mal die Open ClipArt Library angucken. Das ist alles mit Inkscape gemacht...

    Siehe auch: de.wikipedia.org/wiki/SVG

    Komponenten kann ich aber keine Vorschlagen...

    mfg

    Christian


    Kaum macht man's richtig, schon klappts!
    Danke für die detailiertere Info zum SVG Format. Das bestätigt mein Bestreben in Richtung SVG orientierter Lösungen. Das SVG ein standardisiertes Format vergleichbar zu HTML ist, war mir so nicht bewusst.
    Aber so ist das im allgemeinen mit Informationen, die man nur oberflächlich angekratz hat.

    Nach dem ich mir ein paar "Quelltexte" von SVG Datein angesehen habe, ist mir mit dem neuen Wissen jetzt auch aufgefallen, dass dort manchmal sogar eine DOCTYPE Deklaration in Richtung W3C enthalten ist.

    Gruß LoNi
    WENN 'Wer dumm frägt kriegt ne dumme Antwort.' = 'Wer nicht frägt bleibt dumm.' DANN ...???
    Hallo,

    Vektorgrafik würde ich in Richtung SVG gehen. Ich wollte vor einiger Zeit mal eine entsprechende Komponente entwerfen, bin dann aber doch nicht dazu gekommen. Vielleicht finde ich ja irgendwann die Möglichkeit die Idee doch noch in die Tat umzusetzen.

    mfg Florian
    Hallo zusammen,

    Mühlen mahlen manchmal sehr langsam und irgendwann steht man dann offensichtlich doch wieder am Anfang.
    Ich greife daher meinen eigenen Call nochmals auf und stelle die Frage vom 7. Dezember 2010 nochmals in der vergleichbaren Form.
    Wenn keiner neue Ideen in den Raum wirft, bin ich mit Untersuchungen in Richtung SVG wohl noch auf dem "richtigen" Weg und werde diese erst mal weiter verfolgen.

    Gruß LoNi
    WENN 'Wer dumm frägt kriegt ne dumme Antwort.' = 'Wer nicht frägt bleibt dumm.' DANN ...???
    Hi LoNi
    SVG ist sicher ein sehr interessantes Format, da es auf XML aufbaut. Aber guck dir dochauch mal *.dxf an. Ich finde, Wikipedia sagt da eigentlich schon alles darüber aus. Andrerseits ist auch das hier sehr interessant.
    Und um den grundsätzlichen Aufbau von VektorgrafikDateiem zu verstehen, reicht eigentlich auch schon das hier.

    Andere Links:
    de.wikipedia.org/wiki/Xara_Des…e-Version_von_Xara_Xtreme
    de.wikipedia.org/wiki/Grafikformat

    SVG hat den Vorteil, dass es von den Browsern dargestellt werden kann. Ausserdem kann auch Inkscape SVG erstellen und lesen und auch Bitmaps vektorisieren.

    Gruss
    Delbor
    roase.ch/

    Was wirklich zählt, ist Intuition. Albert Einstein

    ________________

    Delbor alias Zoran
    Lass um Gottes Willen die Hände weg von dxf. Das ist kein Format, das ist eine Katastrophe. Das wäre in etwa so, wenn du statt einer Datenbank eine Textfile verwenden würdest. Wenn es mit Delphi Bordmitteln gehen soll, dann TMetafile. Zu SVG kann ich leider nichts sagen. LG Thomas
    Einen Satz verstehen, heißt, wissen was der Fall ist, wenn er wahr ist. (Ludwig Wittgenstein)
    Hallo zusammen,

    vielen Dank für die Rückmeldungen. Ich melde mich gegen Ende der Woche mit Feedback, was ich mit den von euch geteilten Informationen angefangen habe.

    Bis dahin freundliche Grüße
    LoNi
    WENN 'Wer dumm frägt kriegt ne dumme Antwort.' = 'Wer nicht frägt bleibt dumm.' DANN ...???
    Vielleicht hilft dir auch http://www.riversoftavg.com/svg.htm

    Als Editor kann man Inkscape benotzen, oder verstehe ich das so das du im Programm editieren möchtest ?
    Von RiverSoft habe ich zumindest eine Info das an einer Editorkomponente gearbeiter (oder nachgedacht) würde.

    Ich denke SVG ist das was du suchst, von allem anderen würde ich die Finger lassen, das wird wohl auch mehr und
    mehr im Web der Standard werden.

    Rollo


    Hallo LoNi,

    Du kannst SVG auch mit Hilfe der Firemonkey-Komponente TPath3D darstellen.
    Einfach bei der Eigenschaft Path (PathData) den SVG-Code eingeben.
    Beispielsweise

    Quellcode

    1. m 1363.3937,375.08234 0.4787,-0.70403 0.6792,0.54623 -0.5563,0.60724 -0.6016,-0.44944 z

    zeichnet den Länderumriss von San Marino.
    Eventuell noch die Eigenschaft WrapMode wie gewünscht einstellen.

    ZYL
    Hallo Rollo,

    hast du persönliche Erfahrung mit der Komponente von Riversoft?
    Rein von der Info auf der Homepage und der Testläufen mit den dort erhältlichen Demos würde sie zumindest alles abdecken, was wir in unserem Projekt benötigen.

    Die Untersuchung des "AggPasMod" (wurde von Sorceforge nach Github verlagert, daher hier ein aktueller Link ) ist für morgen angesetzt.

    @Alle:
    Das Abschluss Feedback gebe ich ab, sobald das Testprojekt konzeptionell vollständig ist und eine "runde Sache" ist.

    Gruß LoNi
    WENN 'Wer dumm frägt kriegt ne dumme Antwort.' = 'Wer nicht frägt bleibt dumm.' DANN ...???