AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi SVG Lade-Problem

Ein Thema von UliBru · begonnen am 26. Jun 2025 · letzter Beitrag vom 27. Jun 2025
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.059 Beiträge
 
Delphi 12 Athens
 
#1

AW: Delphi SVG Lade-Problem

  Alt 26. Jun 2025, 15:37
Es gibt auch SVG von EtheaDev
https://github.com/EtheaDev/SVGIconImageList

Aber ich vermute mal, dass Du TMS nicht nur wegen SVG nutzt.


Zitat:
wenn du nur einfarbige SVGs als icon brauchst kannst du theoretisch auch einfach den SVG Path in den TPath von FMX übergeben...damit das für kreise gut läuft habe ich zum teil die "Q" function substituieren müssen
Ich fürchte ganz so einfach wird es nicht.
TPathData kann zwar einen Pfad rendern, aber SVG ist viel komplexer und besteht meist aus mehreren Layern,
das kann TPath dann schon nicht mehr.
Aber ja, man kann SVGs so anpassen, dass sie in TPath gut gerendert werden können, mache ich auch so.
Und es gibt im internet einen automatischen shape to path converter!
https://thednp.github.io/svg-path-co...r/convert.html


und weil TPath
Bezier Kurven nicht beherrscht habe ich diesen Konverter gebaut(oder aus zwei orten zusammen geklaut) (anhang)...


Der wird so benutzt
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Path1.Data.Data := SVGPathToPath(Memo1.Text);
end;
Angehängte Dateien
Dateityp: pas uSVGPath.pas (26,7 KB, 1x aufgerufen)
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty (26. Jun 2025 um 15:50 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi SVG Lade-Problem

  Alt 26. Jun 2025, 15:57
Und es gibt im internet einen automatischen shape to path converter!
https://thednp.github.io/svg-path-co...r/convert.html
Danke sehr, wieder ein neuer Converter.

Der kommt aber anscheinend nicht so gut klar mit komplexeren SVG, wenn ich mal so ein Beispiel reinwerfe

Delphi-Quellcode:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <g stroke="#1c1308" stroke-width="1">
  <path d="M32,29l-11-1c-25-1-20,0-18,20c2,8,0,13,10,13z" fill="#53381a"/>
  <path d="M36,31h-11c-25-1-20,0-18,20c2,8,1,12,12,9z" fill="#8a5b28"/>
  <path d="M32,25c5-10,3-12,18-10c20,5,20,6,35,6c10,1,20,4,10,16l-11,20h-66z" fill="#454f2e"/>
  <path d="M13,53v7l45,18v-7zM32,25c5-10,3-12,15-8c20,6,10,6,31,6c10,1,18,4,10,16l-11,20l-56-9z" fill="#76894c"/>
  <path d="M13,53c-3-10,2-9,10-10c10-1,37,7,20,7c-12,1-12,0-12,10zM31,60c-2-14,13-8,20-10l7,3v18z" fill="#8e996c"/>
  <path d="M57,62c1,20,0,19,18,19c20,0,17,0,19-17c0-17-1-16-18-18c-20-1-19,0-19,16z" fill="#53381a"/>
  <path d="M60,64c1,20,0,19,18,19c20,0,17,0,19-17c0-17-1-16-18-18c-20-1-19,0-19,16z" fill="#8a5b28"/>
  </g>
</svg>
Hiermit bekomme ich schon mehr Info
https://shapeshifter.design/
https://svg2vector.com/
https://yqnn.github.io/svg-path-editor/
https://boxy-svg.com/

Es ist aber immer gut, wenn man zig Online-Tools zum gegeneinander Testen hat.

Geändert von Rollo62 (26. Jun 2025 um 16:10 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.059 Beiträge
 
Delphi 12 Athens
 
#3

AW: Delphi SVG Lade-Problem

  Alt 26. Jun 2025, 16:21
Und es gibt im internet einen automatischen shape to path converter!
https://thednp.github.io/svg-path-co...r/convert.html
Danke sehr, wieder ein neuer Converter.

Der kommt aber anscheinend nicht so gut klar mit komplexeren SVG, wenn ich mal so ein Beispiel reinwerfe

Delphi-Quellcode:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <g stroke="#1c1308" stroke-width="1">
  <path d="M32,29l-11-1c-25-1-20,0-18,20c2,8,0,13,10,13z" fill="#53381a"/>
  <path d="M36,31h-11c-25-1-20,0-18,20c2,8,1,12,12,9z" fill="#8a5b28"/>
  <path d="M32,25c5-10,3-12,18-10c20,5,20,6,35,6c10,1,20,4,10,16l-11,20h-66z" fill="#454f2e"/>
  <path d="M13,53v7l45,18v-7zM32,25c5-10,3-12,15-8c20,6,10,6,31,6c10,1,18,4,10,16l-11,20l-56-9z" fill="#76894c"/>
  <path d="M13,53c-3-10,2-9,10-10c10-1,37,7,20,7c-12,1-12,0-12,10zM31,60c-2-14,13-8,20-10l7,3v18z" fill="#8e996c"/>
  <path d="M57,62c1,20,0,19,18,19c20,0,17,0,19-17c0-17-1-16-18-18c-20-1-19,0-19,16z" fill="#53381a"/>
  <path d="M60,64c1,20,0,19,18,19c20,0,17,0,19-17c0-17-1-16-18-18c-20-1-19,0-19,16z" fill="#8a5b28"/>
  </g>
</svg>
Hiermit bekomme ich schon mehr Info
https://shapeshifter.design/
https://svg2vector.com/
https://yqnn.github.io/svg-path-editor/
https://boxy-svg.com/

Es ist aber immer gut, wenn man zig Online-Tools zum gegeneinander Testen hat.
Du hast ja schon eine komplette Turnier Aufstellung am start!
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi SVG Lade-Problem

  Alt 26. Jun 2025, 16:34
Du hast ja schon eine komplette Turnier Aufstellung am start!
Ja, ich versuche schon seit Jahren von PNG & Co. wegzukommen, weil SVG das ideale Format ist.
Ehrlicherweise habe ich aber immer noch viel mehr PNG in den Apps als SVG

Was ich aber z.B. auch vermehrt mache, für bestimmte Primitive, ich habe mit den SVG PathData einfach als globale const String Konstanten in ein Unit gelegt und nutze dieses direkt mit TPathData.

So brauche ich noch nicht einmal externe Files, sondern es ist im Binary.
Das geht aber nur mit sowas wie Arrows usw., also recht primitive Kandidaten, die langfristig unverändert bleiben.

Verschiedene Stiles kann ich dann auch einfach durch einbinden verschiedener solcher Units erreichen.

Auf der anderen Seite habe ich dann ein Master-DataSource, in dem ich alle PNG und SVG halte, die ich in allen Projekten standardmäßig brauche.

So habe ich mehrere Level um SVG & PNG möglichst zentral zu verwalten und wiederzuverwenden.

Das bischen mehr Speicheraufwand ist es allemal Wert nur mit einer zentralen "Image" Quelle zu tun zu haben.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.581 Beiträge
 
Delphi 12 Athens
 
#5

AW: Delphi SVG Lade-Problem

  Alt 26. Jun 2025, 17:10
PNG/SVG/uvm. als Ressource in die EXE

Muß ja nicht unbedingt eine TImageList in einer DFM-Ressource sein
... gibt auch andere Lösungen.




Was mist ist, es gab mal (gibt "eigentlich" noch, aber niemand hat es mehr implementiert, außer dem Internet Explorer)
ein res:// Protokoll, wo man Ressourcen (Bilder/CSS/HTML/sonstwas) direkt als Link, z.B. Browser/TWebBrowser nutzen konnte, DIREKT aus einer EXE/DLL hinaus.
https://learn.microsoft.com/en-us/pr...710218(v=vs.85)

res://C:%5Cirgendwo%5Cmeine.exe/DATA/DasBild.svg
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Jun 2025 um 17:16 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#6

AW: Delphi SVG Lade-Problem

  Alt 26. Jun 2025, 18:02
PNG/SVG/uvm. als Ressource in die EXE

Muß ja nicht unbedingt eine TImageList in einer DFM-Ressource sein
... gibt auch andere Lösungen.
Genau, statt dieser frickeligen RAD Editoren kann man das auch wunderbar im Code-Editor bearbeiten,
so dass es auch Updates und sonstige Unwirren übersteht.
Wenn man einmal so ein riesiges Bildergrab versemmelt hat, im RAD Editor, dann weiss man wovon ich rede.

Ja, *.rc ist auch eine schöne Sache, mache ich auch teilweise.
Bei Cross-Platform kommt man dann am Ende wieder mit dem Deployment-Editor in Berührung, was ein Paradebeispiel eines vergurkten RAD-Editors ist, dem ich nur soweit traue, wie ich ihn werfen kann.
Deshalb ist mir eine Code-Lösung immer viel lieber als solche halbherzigen Versuche, die Sache "einfacher" zu machen.

Wenn man sich abseits von Delphi RAD mal umschaut, wie viel effektiver man mit anderen Code-Editoren im Quellcode arbeiten kann, ohne ständig Mausclicks zu machen, dann kommt man ins Grübeln.

Geändert von Rollo62 (26. Jun 2025 um 18:05 Uhr)
  Mit Zitat antworten Zitat
UliBru

Registriert seit: 10. Mai 2010
159 Beiträge
 
Delphi 12 Athens
 
#7

AW: Delphi SVG Lade-Problem

  Alt 27. Jun 2025, 09:04
Nun, eigentlich will ich bloss Buttons mit Bildern versehen, welche dann das Thema HighDPI überstehen.
Wo ich dann z.B. nicht so winzige Bilder sehen muss wie im Standard-TFileOpenDialog.
Und nun habe ich zwar verstanden, dass es mit SVG besser klappen soll. Aber dann braucht es anscheinend doch Fremdkomponenten.
Ok, die von mir verwendete TMS-Komponente scheint fehlerhaft zu sein. Vielleicht sagt mir TMS was dazu.
Wenn ich Skia downloaden will, wird mir eine Beta-Version angezeigt. Kann das bedenkenlos in einer Produktivumgebung verwendet werden?
Oder dann irgendwas wie EtheaDev mit github.
Und wenn ich dann von Emba ein neues Delphi-Update bekomme kann ich alles wieder nachinstallieren.

Ich möchte mich am liebsten um meinen eigenen Programmcode kümmern. Welche simple Lösung gibt es heute, dass ich dann vernünftige Buttons mit Bildern bekomme die dann auch jedem Rechner/Bildschirm vernünftig skalieren? Gibt es sowas überhaupt von Emba selbst? Sowas wie Button platzieren, Bild dazuladen und fertig? Unabhängig davon scheint es ein generelles Problem zu sein. Ich habe gestern mal Inkscape upgedatet. Da muss ich die Buttons per Lupe anschauen, damit man die Symbole erkennt.
Er wollte so richtig in Delphi einsteigen. Nun steckt er ganz tief drin ...
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.140 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Delphi SVG Lade-Problem

  Alt 27. Jun 2025, 11:14
Und es gibt im internet einen automatischen shape to path converter!
https://thednp.github.io/svg-path-co...r/convert.html
Danke sehr, wieder ein neuer Converter.

Der kommt aber anscheinend nicht so gut klar mit komplexeren SVG, wenn ich mal so ein Beispiel reinwerfe

Delphi-Quellcode:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <g stroke="#1c1308" stroke-width="1">
  <path d="M32,29l-11-1c-25-1-20,0-18,20c2,8,0,13,10,13z" fill="#53381a"/>
  <path d="M36,31h-11c-25-1-20,0-18,20c2,8,1,12,12,9z" fill="#8a5b28"/>
  <path d="M32,25c5-10,3-12,18-10c20,5,20,6,35,6c10,1,20,4,10,16l-11,20h-66z" fill="#454f2e"/>
  <path d="M13,53v7l45,18v-7zM32,25c5-10,3-12,15-8c20,6,10,6,31,6c10,1,18,4,10,16l-11,20l-56-9z" fill="#76894c"/>
  <path d="M13,53c-3-10,2-9,10-10c10-1,37,7,20,7c-12,1-12,0-12,10zM31,60c-2-14,13-8,20-10l7,3v18z" fill="#8e996c"/>
  <path d="M57,62c1,20,0,19,18,19c20,0,17,0,19-17c0-17-1-16-18-18c-20-1-19,0-19,16z" fill="#53381a"/>
  <path d="M60,64c1,20,0,19,18,19c20,0,17,0,19-17c0-17-1-16-18-18c-20-1-19,0-19,16z" fill="#8a5b28"/>
  </g>
</svg>
Hiermit bekomme ich schon mehr Info
https://shapeshifter.design/
https://svg2vector.com/
https://yqnn.github.io/svg-path-editor/
https://boxy-svg.com/

Es ist aber immer gut, wenn man zig Online-Tools zum gegeneinander Testen hat.
Du hast ja schon eine komplette Turnier Aufstellung am start!
Ansonsten gibt's noch den RedeemerSVG von mir. Das Sofa ist kein Problem für ihn. Und er ist wirklich winzig.
Angehängte Grafiken
Dateityp: png redeemersvg.png (2,8 KB, 74x aufgerufen)
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#9

AW: Delphi SVG Lade-Problem

  Alt 27. Jun 2025, 12:37
Ansonsten gibt's noch den RedeemerSVG von mir. Das Sofa ist kein Problem für ihn. Und er ist wirklich winzig.
Stimmt, das hatte ich noch ganz vergessen, das ist auch super für Delphi
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.059 Beiträge
 
Delphi 12 Athens
 
#10

AW: Delphi SVG Lade-Problem

  Alt 27. Jun 2025, 16:18
Diesen Thread hätte es viel früher geben sollen!
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
Antwort Antwort


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:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz