Entwicklung
  SVGImage
    Beispiele
  MWKEdit
  PaletteForm
  MWKComboBoxEx
  MWKToolPalette
  GlowLabel
  ShellDropper
  Tutorials
  Bibliotheken
  Silbentrennung
Linux
Kontakt
impressum
Druckansicht

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
#11 Verfasst am: 02.04.2008, 19:46:10 von: Elias Zurschmiede
Fehler in GetFontFamily
Hallo Martin

Ich habe die Komponente nun ein wenig getestet und bin begeistert. Kompliment!

Anbei noch ein paar Anmerkungen:

Im Kommentar vom 01.11.2007 ist die Rede von einem Runtime-Fehler (Kommentar von Thomas).

Ich hatte diesen Runtime-Error bei manchen SVG's mit Text ebenfalls. Der Fehler passiert, wenn eine Font angefordert wird, die auf dem System nicht installiert ist und der Fontname keinen "-" beinhaltet. In diesem Fall wird eine Referenz auf ein bereits zerstörtes Object zurückgeliefert.

Bei mir war's z.B. die OCRB-Font in folgendem Tag.
<tspan x="0" y="0" font-family="'OCRB'" font-size="420">A</tspan>

Fix:
function TSVGCustomText.GetFontFamily(const FontName: WideString): TGPFontFamily;
var
  FF: TGPFontFamily;
  C: Integer;
  FN: WideString;
begin
  FF := TGPFontFamily.Create(FontName);
  if FF.GetLastStatus <> OK then
  begin
    FF.Free;

    C := Pos('-', FontName);
    if (C <> 0) then
    begin
      FN := Copy(FontName, 1, C - 1);
      FF := TGPFontFamily.Create(FN);
      if FF.GetLastStatus <> OK then
      begin
        FF.Free;
        FF := TGPFontFamily.Create('Arial');
      end;
    end else
      FF := TGPFontFamily.Create('Arial'); // EZ - 2.3.2008: fix AV if FontFamily not found e.g <tspan x="0" y="0" font-family="'OCRB'" font-size="420">A</tspan>
  end;
  Result := FF;
end;


Fix 2:
TSVGImage sollte noch um folgendes ergänzt werden, ansonsten knallt's im Designer wenn man eine mit dem SVGImage verbundene ImageList löscht.
  protected
    procedure DefineProperties(Filer: TFiler); override;
    procedure CheckAutoSize;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override; // EZ - 2.4.2008: fix AV
.
.
.
procedure TSVGImage.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited;
  if (Operation = opRemove) and (AComponent = ImageList) then
    ImageList := nil;
end;


PS: Habe in einem Comment gelesen das die Komponenten unter D2006 getestet wurden, auf dem "alten" D7 kompilieren die Komponenten ebenfalls problemlos.

Schöne Grüsse
Elias

delight software gmbh

Danke für das Lob und die Fehlermeldungen. Ich habe eine korrigierte Fassung hochgeladen - Martin Walter
#12 Verfasst am: 17.06.2008, 14:18:56 von: Tom
Welche Voraussetzungen m�ssen beim User erf�llt werden?
Hallo Martin,

ich habe mit Deiner Komponente ein kleines Tool entwickelt, mit dem SVG´s einem Form hinzufügen kann. Dabei werden die TSVGImages dynamisch zur Laufzeit erstellt. Das funktioniert eigentlich ganz gut.

Nun habe ich dem Entwickler meiner SVG´s mal das Tool geschickt. Allerdings wird bei ihm nix erstellt. Er sieht die SVG´s nicht in meinem Programm. Ich selbst habe mitlerweile auf 3 meiner Rechner das Tool getestet und es funktioniert.

Welche Voraussetzungen muss er denn erfüllen, damit es funktioniert bei ihm? Er hat WindowsXP Pro SP2. Kann es sein, dass er den XML-Parser noch installieren muss, respektive die neueste Version dafür haben müsste?

Danke für Feedback
Lg Tom

Die einzige Voraussetzung sind die XML Core Services con Microsoft, am Besten in Version 6 - Martin Walter
#13 Verfasst am: 30.01.2019, 10:07:33 von: Shlomo Abuisak
SVGDemo
In SVGDemo you are using AngleChooser TAngleChooser
where are they?
#14 Verfasst am: 30.01.2019, 10:07:49 von: Shlomo Abuisak
SVGDemo
In SVGDemo you are using AngleChooser TAngleChooser
where are they?
#15 Verfasst am: 18.12.2019, 14:02:08 von: Ruslan
Path color changing
Hello. I am trying to change the style.

SVG.LoadFromFile(S);
SVG.FindByID('element1').Style.Values['fill'] := '#FF0000';
PaintBox1.Invalidate;

The style does not change. What am I doing wrong?
< Ältere Kommentare   
Kommentar erstellen