AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi ganz simples Vektor-Grafikformat
Thema durchsuchen
Ansicht
Themen-Optionen

ganz simples Vektor-Grafikformat

Ein Thema von _frank_ · begonnen am 26. Jun 2007 · letzter Beitrag vom 22. Jul 2007
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#1

ganz simples Vektor-Grafikformat

  Alt 26. Jun 2007, 17:28
Hallo,
ich bin am überlegen, dem DFM-Editor eine funktion bereitzustellen um Vektorgrafiken darzustellen. Diese soll benutzt werden, um unbekannte controls darzustellen.

Bedingungen:
- definition im textformat (für Speicherung in ini)
- ohne header etc.
- nur einfache Befehle wie linie, rechteck, kreis, text, farbe setzen, etc.
- relative definition (%)

ich hab mir schonmal SVG und WMF angeschaut, wobei SVG einen nicht unbedeutenden Header mitbringt, und somit der Parser ziemlich riesig ist und WMF nicht textbasiert ist.

vielleicht hat der eine oder andere sowas schonmal geschrieben, in der Forumsuche hab ich noch nichts passendes gefunden.

habe mir auch schon Gedanken (in Anlehnung an SVG und den Canvas-Methoden) gemacht, wie man sowas realisieren könnte:

Linie: LXXYYXXYY (XX,YY => zweistellige prozentuale Angaben, anfangs und Zielpunkt)
Rechteck: RXXYYXXYY
Elipse: EXXYYXXYY
Stifteigenschaften setzen: PSRGB (S=>Style/Mode,1 HexDigit pro Farbkanal, wird gedoppelt [F=>FF])
Hintergrund: BSRGB
Schriftfarbe: FSRGB

die Definition ggf. per Komma getrennt (wegen besserer Lesbarkeit und Einlesen in stringlist )
nur beim Text bin ich noch am grübeln, da ich sowas wie Positionierung/Ausrichtung und schriftgröße mit einbauen müsste...

TASXXYY:hier_der_text (A=>Alignment[R,C,L],S=>size[%])

vielleicht fällt jemanden eine bessere Idee an...

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#2

Re: ganz simples Vektor-Grafikformat

  Alt 26. Jun 2007, 17:33
Als ich den Titel gesehen hab musst ich spontan an XML denken. Damit ließe sich die Sache leicht realisieren.

mfg, Björn
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: ganz simples Vektor-Grafikformat

  Alt 26. Jun 2007, 17:35
Hallo,
Zitat von arbu man:
Als ich den Titel gesehen hab musst ich spontan an XML denken. Damit ließe sich die Sache leicht realisieren.
damit sind wir ja schon wieder bei SVG.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: ganz simples Vektor-Grafikformat

  Alt 26. Jun 2007, 17:48
Evtl. gleich ein Delphi-Win32-Projekt aufsetzen das XAML (jedenfalls die GUI-Beschreibung) als Beschreibung verwendet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#5

Re: ganz simples Vektor-Grafikformat

  Alt 26. Jun 2007, 18:00
Zitat von xaromz:
Hallo,
Zitat von arbu man:
Als ich den Titel gesehen hab musst ich spontan an XML denken. Damit ließe sich die Sache leicht realisieren.
damit sind wir ja schon wieder bei SVG.

Gruß
xaromz
Es muss ja nicht gleich so Komplex sein. Ein einfaches Format würde sicher auch reichen. Z.B. :
XML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<grafik>
  <element>
    <typ>linie</typ>
    <farbe>rot</farbe>
    <start>(0:0)</start>
    <ende>(10:10)</ende>
  </element>
</grafik>
Ließe sich einfach mit ein paar Zeilen parsen:
Delphi-Quellcode:
function StrToPoint(Str: string): TPoint;
var
  s, s1: string;
  p: integer;
begin
  s := StringReplace(Str, '(', '', []);
  s := StringReplace(s, ')', '', []);
  p := Pos(':', s);
  s1 := Copy(s, 1, p-1);
  result.X := StrToInt(s1);
  Delete(s, 1, p);
  result.Y := StrToInt(s);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  s: string;
  start, ende: TPoint;
  Element: TJclSimpleXMLElems;
begin
  Refresh;
  XML.LoadFromString(Editor.Lines.Text);
  for i := 0 to XML.Root.Items.Count - 1 do begin
    Element := XML.Root.Items[i].Items;
    if Assigned(Element.ItemNamed['typ']) then begin
      if Element.ItemNamed['typ'].Value = 'liniethen begin
        if Assigned(Element.ItemNamed['farbe']) then begin
          s := Element.ItemNamed['farbe'].Value;
          if s = 'rotthen begin
            Canvas.Pen.Color := clred;
          end;
          // usw.
          // viell. html farbcodes parsen
        end;
        if
          Assigned(Element.ItemNamed['start'])and
          Assigned(Element.ItemNamed['ende'])
        then begin
          start := StrToPoint(Element.ItemNamed['start'].Value);
          ende := StrToPoint(Element.ItemNamed['ende'].Value);
          Canvas.MoveTo(start.X, start.Y);
          Canvas.LineTo(ende.X, ende.Y);
        end;
      end;
      if Element.ItemNamed['typ'].Value = 'rechteckthen begin
        //...
      end;
    end; // else Fehler behandeln
  end;
end;
Im Beispiel für das XML Mit einen TJvSimpleXMl der JEDIS verarbeitet. Okay ein richtiges Vektorformat ist es nicht aber vielleicht ein guter Anfang.

mfg, Björn
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#6

Re: ganz simples Vektor-Grafikformat

  Alt 26. Jun 2007, 18:37
Wie gesagt, das ganze soll ziemlich kompakt sein, da ich dies mit in meine vorhandenen (INI-) Konfigurationsdateien einbauen kann...
weiterhin möchte ich auf XML-Routinen verzichten, da mir unter D3 der entsprechende Parser fehlt bzw. diesen nachzurüsten den Nutzen übersteigt...

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: ganz simples Vektor-Grafikformat

  Alt 27. Jun 2007, 07:15
1, Inidateien stoßen schnell an ihre grenzen wenn es geht gruppierte Elemente zu verwenden
2, Ein eigenes XML-Format wird schnell komplexer als man denkt da man über der laufe der Zeit immer mehr Elemente benötigt. Und wenn man sich an ein bestehendes Format (SVG) ranhängt braucht man sich neue Tags keine gedanken zu machen. Man unterstützt halt mehr Elemente. Ein Ansatz wäre evtl. das Tiny-SVG-Format das gegenüber dem "normalen" SVG-Format schon eingeschränkt ist. Für den anfang hat man halt keine 100%ige Tiny-SVG-Unterstützung.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#8

Re: ganz simples Vektor-Grafikformat

  Alt 20. Jul 2007, 05:31
wen es interessiert, ich hab mal angefangen ein eigenes Format zu implementieren, um Vektor-Grafiken relativ platzsparend im Textmodus zu definieren (etwa so wie im ersten Posting).

http://www.fw-web.de/download.php?file=unknownImage.zip

vielleicht kann es noch jemand anderes gebrauchen

Gruß Frank
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#9

Re: ganz simples Vektor-Grafikformat

  Alt 20. Jul 2007, 08:33
Moin moin,

Zitat:
Vektor-Grafiken relativ platzsparend im Textmodus zu definieren
also ob das so platzsparend ist ?
Und lesbar ist es auch nicht gerade.

Warum verwendest Du nicht vorhandenes ? Z.B. PostScript:
Delphi-Quellcode:
0 0 m % moveto
0 200 l % lineto
200 200 l
200 0 l
0 0 l
1 1 0 sc % setrgbcolor
f % fill
1 0 0 sc
50 180 m
(Hallo) show
Ist Text, ist nicht so exotisch, braucht auch nicht viel Platz.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: ganz simples Vektor-Grafikformat

  Alt 20. Jul 2007, 09:44
Da fällt mir noch HPGL ein, eine ziemlich alte Grafik-Sprache von Hewlett-Packard für ihre Plotter. Es scheint jedoch immer noch aktuell zu sein. Vielleicht ist das etwas für Dich.

PostScript ist zwar genauso gut, nur ist die zu implementierende Stack-Maschine nicht ganz so trivial, wie ein simpler HPGL-Interpreter. Das gilt allerdings nur, wenn man die gesamte Postscript-Sprache implementieren will, ansonsten nehmen die beiden Sprachen sich nicht viel.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 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