SVGImage für Borland Delphi

Akuelle Version: v0.69 vom 05.04.2008

Das Graphikformat SVG verbreitet sich immer weiter. Jeder aktuelle Browser kann SVG zumindest teilweise darstellen. Auch viele Zeichenprogramme unterstützen inzwischen das plattformunabhängige Format.
Mit dieser Komponente kann nun jeder SVG in Delphi nutzen.

Features:
Das Testprogramm
Das Testprogramm

Einschränkungen:

Downloads

Quellcode (13 KB)
Beispielbilder (215 KB)
Beispielprogramm (655 KB)
Quellcode Beispielprogramm (4 KB)

Zusätzlich werden folgende Bibliotheken benötigt:

DirectX 9 Headers v1.0 (756 KB)
GDI+ v1.2 (112 KB)
MSXML 6 v1.3 (43 KB)
SVG-Bibliothek v0.69b (34 KB)
Lists v1.0 (13 KB)
MWKSysUtils v2.7 (6 KB)

Kommentare

Kommentar erstellen
#1 Verfasst am: 20.03.2007, 00:00:00 von: Bart Vandromme
CalcRect
Hallo,

Ich wunche gern ihren SVG Komponent brauchen, aber ich kann die Code nicht compilieren da er ein Problem ist mit die Function "CalcRect".
Ich finde die nicht.

Sie können mich kontaktieren auf 'bvdr#at#lvd.be'
Andern Sie #at# bei @.

mfg,
Bart

Es werden zusätzliche Bibliotheken benötigt. Ich habe die Links auf der Seite eingefügt - Martin Walter
#2 Verfasst am: 31.10.2007, 00:00:00 von: Thomas
Leider wird gar nichts im Demoprogramm angezeigt
Egal welche SVG Graphik Datei ich öffne, im Demoprogramm SVG-Viewer wird -nichts- angezeigt.
Die Graphiken wurden aus dem OpenOffice oder aus TurboCad exportiert.

Die Delphi Source konnte ich nach einigen Anpassungen übersetzen.

Gruss

Thomas

Welche Anpassungen waren nötig? - Martin Walter
#3 Verfasst am: 31.10.2007, 00:00:00 von: Thomas
RE: Leider wird gar nichts im Demoprogramm angezeigt
Muss meine vorherige Bemerkung korrigieren:

Eine Zeichnung wird ganz am Rand dargestellt, Zoomen verändert nichts, mit dem Opacity Regler kann die Zeichnung verändert werden und mit der Rotation dreht sich das Objekt. Das ganze einfach ganz am Rande oder sogar ausserhalb der Zeichnung, darum sind wohl einige Zeichnungen gar nie sichtbar.
Gruss

Thomas

Das scheint ein Problem mit der Bounding box zu sein. Leider berechnet mein Code noch nicht die tatsächliche Größe des Bildes, sondern verlässt sich auf die Angaben im Bild - Martin Walter
#4 Verfasst am: 01.11.2007, 00:00:00 von: Thomas
Anpassungen
Anscheinend wurden früher einmal Versionen der Packages für Delphi 7 erstellt und die Units auch so bezeichnet ("xxxxx_d7"). Aktuell enden keine Units mit "_d7", die Anpassungen waren also nur das Umbenennen der Verweise in der uses Deklaration auf die aktuellen Namen der Units, also nichts grosses.

Gruss

Thomas

Stimmt, das war das DirectX-Package. Habe ich gleich mal geändert - Martin Walter
#5 Verfasst am: 01.11.2007, 00:00:00 von: Thomas
Kein Zoom
"Das scheint ein Problem mit der Bounding box zu sein. Leider berechnet mein Code noch nicht die tatsächliche Größe des Bildes, sondern verlässt sich auf die Angaben im Bild - Martin Walter"

Hatte der Zoom den einmal funktioniert?

Gruss Thomas

Wenn die Bounding box richtig definiert ist, dann funktioniert auch der Zoom. Beispiele findest Du hier auf der Seite - Martin Walter
#6 Verfasst am: 01.11.2007, 00:00:00 von: Thomas
Komponente
Wenn die Bounding box richtig definiert ist, dann funktioniert auch der Zoom. Beispiele findest Du hier auf der Seite - Martin Walter

Nun in der Demoapplication hat der Zoom bei mir nie funktioniert und andere Beispiele funktionieren im IE nicht: Es werden entweder Fehlermeldungen oder XML Code angezeigt.

Die Komponeten konnte ich jedoch linken und einige SVG Dateien anschauen, das sieht auch sehr schön aus nur wenn ein Text in der Graphik ist stürzt das Programm ab. Delphi 2007 meldet einen Runtimefehler. Die letzte noch aufgerufenen Funktion ist "TSVGText.SetSize" .

Gruss
Thomas

Dieses Problem kann ich so nicht nachvollziehen; hast Du eine genaue Fehlerbeschreibung? - Martin Walter
#7 Verfasst am: 10.11.2007, 12:29:03 von: Tom
Installation ist zu kompliziert und wirft Fehler auf
Hallo,

sicher ist es etwas unfair jetzt hier einfach pauschal zu schreiben, dass es so wie es hier dargestellt wurde zu komplziert ist, aber leider habe ich es mit meinem D6 unter W98 und WinXP nicht geschafft alles fehlerfrei zu installieren.

Zur Zeit scheitere ich immer wieder an der MSXML-Install. Ich hatte mir bereits vor Jahren die TypeBibliothek installiert und soll das jetzt nochmal tun? Hm, selbst wenn ich es versuche, erhalte ich eine Fehlermeldung: {$VARPROPSETTER ON} = ungültige Compileranweisung...

Bevor ich mich weiter rumquähle, würde ich vorher gern wissen, ob es denn überhaupt möglich ist mit den Komponenten zur Laufzeit ein SVG zu laden, zu skalieren und dann einem TImage zu übergeben?

Danke Tom

Getestet ist die Komponente unter Delphi 2006 und neuer; ob sie unter D6 funktioniert, weiß ich nicht, da ich das nicht habe. Da sind wohl ein paar neuere Compilerschalter drin.
Das MSXML-Package ist kein neuer Import der Type library, sondern eine bearbeitete Version. Das muss man nicht importieren, sondern als Package installieren.
Mit der Bibliothek lässt sich ein SVG skaliert in ein TImage stecken; das ist auch der Sinn der Komponente - Martin Walter
#8 Verfasst am: 10.11.2007, 14:06:44 von: Tom
{$VARPROPSETTER ON}
Habe ich jetzt einfach mal remarkt...

Next Problem in der dann folgenden Installation der SVG-Bibliothek, da der Compiler ListPackage nicht finden konnte. Weiter geht es dann auch noch mit dieser Zeile, die Ihm Probleme macht...

Undefinierter Bezeichner:
FNameValueSeparator := WideChar(TStringList(Source).NameValueSeparator);

Fragen und Probleme...

Die Komponente benötigt das Package Lists (zu finden auf der Bibliotheken-Seite.
Zu "Undefinierter Bezeichner": Wahrscheinlich ist D6 einfach zu alt und es gibt da einige Eigenschaften in der VCL noch nicht - Martin Walter
#9 Verfasst am: 22.11.2007, 20:19:06 von: Chris Ueberall
#Text
Hallo,

die Probleme mit Textdarstellung rühren m.E. durch das fehlerhafte parsen des Attributes 'font-size' (TSVGBasic.ReadStyle). Folgende Änderung hatte bei mir Erfolg:

Value := Style['font-size'];
if Value <> '' then begin
Value := StringReplace(Value, 'px', '', [rfReplaceAll]);
if not TryStrToFloat(Value, FFontSize) then
FFontSize := 0;
end;

HTH,
Chris Ueberall;

Besser ist folgender Code:
  Value := Style['font-size'];
  if Value <> '' then
    FFontSize := ParseLength(Value);
Martin Walter
#10 Verfasst am: 02.04.2008, 18:05:12 von: Elias Zurschmiede
MWKSysUtils fehlt
Hallo Martin

Habe mir mal SVGImage (v0.67 vom 23.11.2007) gezogen und bin gerade am Packages installieren (Delphi 7) - dabei ist mir aufgefallen, dass man zusätzlich noch MWKSysUtils v2.7 aus den Bibliotheken benötigt.

Würde evtl. noch Sinn machen MWKSysUtils unter "Zusätzlich werden folgende Bibliotheken benötigt" aufzuführen.

Schöne Grüsse
Elias

delight software gmbh
Neuere Kommentare >
Kommentar erstellen

© Martin Walter Computerservice
Alle Rechte vorbehalten
Vervielfältigung nur mit Genehmigung von Martin Walter