Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI (https://www.delphipraxis.net/193635-redeemersvg-tsvgimage-kleine-svg-unit-fuer-delphi-mit-gdi.html)

berens 7. Jun 2018 15:10

AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich probiere gerade die Komponente aus.

Mir ist mit einer .svg-Datei passiert, dass die Angaben in "mm" waren. Entsprechender Fehler korrigiert:

Delphi-Quellcode:
unit RedeemerSVGHelpers;
// Zeile 93
if EndsText('px', temp) then
  Delete(temp, Length(temp) - 1, 2) // Standardeinheit, ignorieren
else if EndsText('pt', temp) then
Unterstützung für "mm" hinzugefügt. Schaut normal aus.
Delphi-Quellcode:
unit RedeemerSVGHelpers;
// Zeile 93
if EndsText('px', temp) then
  Delete(temp, Length(temp) - 1, 2) // Standardeinheit, ignorieren
else if EndsText('mm', temp) then
  Delete(temp, Length(temp) - 1, 2) // Standardeinheit, ignorieren
else
  if EndsText('pt', temp) then

Evtl. sollte die Prozedur so angepasst werden, dass der Text ist "temp" so bereinigt wird, dass wirklich nur Zahlen 0-9, "." und "," drin stehen dürfen, falls andere Einheiten hiermit immer noch nicht abgedeckt sind? Zumindest Incscape bietet neben "mm" noch "pc", "in" und "cm" an...
Delphi-Quellcode:
  // Zeile 113
  Value := ReadFloat(temp) * Factor;
Frage 1
Ein tatsächliches Problem was ich habe: Die andere Datei (siehe Anhang) wird nur hier nur als schwarzes Rechteck angezeigt, lässt sich in anderen Programmen aber ganz normal öffnen...

Frage 2
Delphi-Quellcode:
  SVG := TSVGImage.Create;
  SVG.LoadFromFile('c:\temp\svg.svg');
  SVG.SetSize(1000,900);
  Image1.Picture.Assign(SVG);
Das Bild wird leider nur ganz klein oben links dargestellt (ca. 32x32 px), des Rest des Bildes (1000x900 px) ist schwarz? Wie vergrößert man die SVG Graphik korrekt? Ich habe keine Ahnung wie ich das Callback-Event
Delphi-Quellcode:
type TSizeCallbackEvent = procedure (const Viewport: TRealRect; var Dimensions: TRealPoint) of object;
innerhalb einer Prozedur (bzw. überhaupt) verwenden soll, hier fehlt mir komplett sowohl Grundlagenwissen wie Beispiel...

Redeemer 7. Jun 2018 19:38

AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
 
Hi,

die angehängte Datei ist keine SVGTiny-Datei. Meine Unit liest nur SVGTiny, weil sie sonst eine komplette CSS-Selektor-Logik enthalten müsste. Die Unterstützung des Style-Attributs ist hingegen in SVGTiny zwingend vorgeschrieben und wird unterstützt. Vielleicht gibt es irgendwo im Internet einen Konverter von SVG nach SVGTiny. Microsoft hat mal einen auf Github geladen, aber den gibt es nicht mehr glaube ich. Wer die SVG erstellt hat, muss sie wohl noch einmal als SVGTiny speichern. Meine Unit unterstützt eine scheinbar wahllose Auswahl von Features aus SVGTiny und SVG 2.0.

Für meinen Job habe ich die Unit gestern um die Eigenschaft vector-effects aus SVG 2.0 erweitert (klingt großartig, ist aber einfach nur das Deaktivieren der Konturenskalierung).

Zum SizeCallback: Du brauchst eine Ereignisbehandlung (eine Prozedur) mit genau den angegebenen Parametern. Nennen wir sie einfach
Delphi-Quellcode:
HandleZoom
:
Delphi-Quellcode:
procedure TForm1.HandleZoom(const Viewport: TRealRect; var Dimensions: TRealPoint);
begin
  Dimensions.x := StrToFloat(Edit4.Text) / 100 * Dimensions.x;
  Dimensions.y := StrToFloat(Edit4.Text) / 100 * Dimensions.y;
end;
Diese Prozedur sagt RedeemerSVG, es soll das Bild um den Prozentsatz in Edit4 zoomen. Bevor du das Bild lädst, setzt du das Superglobal SizeCallback auf diese Prozedur:
Delphi-Quellcode:
SizeCallback := HandleZoom;

Redeemer 29. Okt 2018 21:21

AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
 
Es gibt Neuigkeiten. Die nächste Version, wann auch immer sie rauskommt, unterstützt u.a.:
  • vector-effect="non-scaling-stroke"
  • Halbtransparenz (nur für schwarze und weiße Füllungen, wegen der Arbeitsweise von ROP2)
  • <image> (keine Transparenz)
  • <pattern> (keine Transparenz)
  • abschaltbare Transparenz und Supersampling (wegen Performance und Speicherbedarf)
  • standardkonformes Verhalten auf diverse völlig unsinnige Pfaddaten (z.B. Bézierkurven-Befehl ohne Kontrollpunkte)
  • Textdekoration
Außerdem habe ich heute gesamte Klassenlayout geändert. Die meisten Funktionen sind nun in einer Klasse TSVGInterpreter zu finden, die auf beliebige TCanvas-Erben zeichnen kann. Grund dafür ist, dass ich von der neuen Version 24 von List & Label (betrifft auch Version 23) maßlos enttäuscht bin. Die „SVG-Unterstützung“ beschränkt sich dort auf die Konvertierung in eine Rastergrafik und Transparenz wird bei Ausgabe auf einem Drucker auch nicht unterstützt... Meine neue Klasse TSVGMetafile zeichnet auf ein Delphi-Referenz durchsuchenTMetafileCanvas und erstellt so ein Delphi-Referenz durchsuchenTMetafile (EMF-Datei), das mit List & Label als Vektorgrafik ausgegeben wird. Metafiles sind einfach nur eine Liste von GDI-Befehlen, die entsprechende Anpassung meiner Klasse war dementsprechend sehr einfach.

EWeiss 30. Okt 2018 06:01

AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
 
Zitat:

[OT]
Die Nutzung ist kostenlos. Wer es in einem eigenen Produkt verwendet, das nicht für den Eigenbedarf ist, muss mir eine Nachricht schreiben. Weiterentwicklungen und Ableitungen der Klasse TSVGImage müssen mir auf Wunsch zur Verfügung gestellt werden.
[/OT]
Nur mal Informationshalber.
Und du denkst irgendjemand hält sich daran? Die Hoffnung stirbt zuletzt.

gruss

Redeemer 30. Okt 2018 08:37

AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
 
Na ja, ich würde ja erwarten, dass die Delphi-Community noch etwas Ehre hat. Mich würde halt interessieren, ob Leute überhaupt Interesse an SVG-Unterstützung für Delphi haben.

Warum informationshalber? Hast du irgendein Projekt entdeckt, dass das nutzt? Die gesamte Doku und alle Kommentare sind auf Deutsch, dadurch sollte sich der Kreis erheblich einschränken.

EWeiss 30. Okt 2018 08:48

AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
 
Zitat:

Warum informationshalber?
Weil ich andere Erfahrungen gesammelt habe.

Meistens wird nur das rausgepickt was von Interesse ist der Rest bleibt liegen.
Wirkliche Mitarbeit.. Fehl am platz.

Aber gut will nicht weiter drauf rumreiten.
Deshalb informationshalber. ;)
Sorry das ich das angeschnitten habe.

gruss

jaenicke 30. Okt 2018 16:41

AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
 
Wir haben einmal eine SVG Komponente gekauft. Ich habe auf jeden Fall vor diese zu ersetzen, denn die funktioniert deutlich schlechter als diese hier... Ich bin nur noch nicht dazu gekommen. Danke auf jeden Fall für deine Mühe. ;-)

Zitat:

Zitat von EWeiss (Beitrag 1417092)
Meistens wird nur das rausgepickt was von Interesse ist der Rest bleibt liegen.
Wirkliche Mitarbeit.. Fehl am platz.

Das passiert natürlich auch und damit muss man rechnen, aber für mich ist das kein Grund keine Open Source Quelltexte mehr zu veröffentlichen. Denn damit würde man ja auch die treffen, die sich an die Lizenzen halten. ;-)

EWeiss 30. Okt 2018 17:16

AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
 
Zitat:

Zitat von jaenicke (Beitrag 1417126)
Wir haben einmal eine SVG Komponente gekauft. Ich habe auf jeden Fall vor diese zu ersetzen, denn die funktioniert deutlich schlechter als diese hier... Ich bin nur noch nicht dazu gekommen. Danke auf jeden Fall für deine Mühe. ;-)

Zitat:

Zitat von EWeiss (Beitrag 1417092)
Meistens wird nur das rausgepickt was von Interesse ist der Rest bleibt liegen.
Wirkliche Mitarbeit.. Fehl am platz.

Das passiert natürlich auch und damit muss man rechnen, aber für mich ist das kein Grund keine Open Source Quelltexte mehr zu veröffentlichen. Denn damit würde man ja auch die treffen, die sich an die Lizenzen halten. ;-)

Mir ist das etwas aufgestoßen.. aber natürlich berechtigt (ist seine Lizenz)
Zitat:

Die Nutzung ist kostenlos. Wer es in einem eigenen Produkt verwendet, das nicht für den Eigenbedarf ist, muss mir eine Nachricht schreiben. Weiterentwicklungen und Ableitungen der Klasse TSVGImage müssen mir auf Wunsch zur Verfügung gestellt werden.
Kann mir nicht denken das sich die Leute zwanghaft daran halten werden. (Ich meine das Muss, Müssen)
Ok war nur eine Frage man muss das jetzt nicht noch weiter aufbauschen.
Wie gesagt meine Erfahrung es ist den Leuten schlichtweg egal was da steht.

grusss


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 Uhr.
Seite 5 von 5   « Erste     345   

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