![]() |
Delphi 12, skia, SVG > PNG, (SpeedButton)
Liebe Leute,
Wir stellen gerade auf D12 um und da hier skia integriert wurde, freuen wir uns. Unser Plan: SVG Dateien als Grundlage für viele Icons zu verwenden und das Skalieren dynamisch erledigen. Leider können TSpeedButtons offenbar nicht direkt mit SVG umgehen. Aber das nur am Rande. Ich scheitere einfach daran, eine PNG-Datei aus einm SVG zu erstellen, das auf eine dynamische Größe skaliert wurde. Ich hab den Code auf ![]() Der Code hier: ![]() liefert mir zwar ein Bitmap, allerdings ist das ziemlich verpixelt, durch das Antialiasing an den Rändern beim Übergang von Vordergrund zu Hintergrund (bzw. Transparenz) Ich scheitere echt daran, rauszufinden, wie ich ein PNG mit Transparenzen hier herausbekomme. Oder für die Speedbuttons ein einfaches, antialiased BMP. Eine passende mitgelieferte Komponente, die einfach jedes Bildformat kennt und TSpeedButton-kompatibel ist, gibt's nicht, oder? Danke Stefan |
AW: Delphi 12, skia, SVG > PNG, (SpeedButton)
Ich nehme an, du willst nicht die SVGIconImageList für VCL und FMX über Get-IT installieren?
Da sind auch TSVGICONIMAGE usw drin. |
AW: Delphi 12, skia, SVG > PNG, (SpeedButton)
Hm, nicht, wenn es sich vermeiden lässt. Andererseits ist das auch ein open source Projekt. In Wahrheit suche ich nur was, was mir aus einer SVG Datei zur Laufzeit ein sauberes PNG mit Transparenzen liefert in bestimmter Größe und alternativ ein Bitmap ohne Antialiasing, damit keine Übergeänge an den Rändern entstehen.
Hast du Erfahrung damit? Kann man die Bilder zur Laufzeit so skalieren, dass sie in TSpeedButtons sauber aussehen? |
AW: Delphi 12, skia, SVG > PNG, (SpeedButton)
Zitat:
![]() Der notwendige Code zum Erzeugen eines PNG aus SVG ist da denkbar simpel:
Delphi-Quellcode:
var img := TImage32.Create(ASize, ASize);
try img.LoadFromFile(ASourceFileName); img.SaveToFile(ATargetFileName); finally img.Free; end; |
AW: Delphi 12, skia, SVG > PNG, (SpeedButton)
Zitat:
|
AW: Delphi 12, skia, SVG > PNG, (SpeedButton)
Zitat:
Allerdings werden bei mir keine Bilder geschrieben und auch kein Fehler ausgegeben. Ich habe es mit LoadFromFile als auch mit LoadFromStream versucht. Bei der LoadFromFile Methode exportiere ich das SVG in eine temporäre Datei (tmpfile) und lasse das dann wieder laden. Die Image32 Bibliothek ist mit dem "SVGIconImageList-12-4.1.1" mitinstalliert worden.
Code:
Viele Grüße
uses
img32 var imgsize, imgname: string; data: TStringlist; isize : integer; img : TImage32; begin for imgSize in data do begin isize := strtoint(imgsize); imgname := TPath.Combine(fodlgOutputFile.FileName, itm+'_'+imgsize+'x'+imgsize+'.png'); img := TImage32.Create(isize,isize); try img.LoadFromFile(tmpfile); img.SaveToFile(imgname); finally img.Free; end; end; Bastian |
AW: Delphi 12, skia, SVG > PNG, (SpeedButton)
Liste der Anhänge anzeigen (Anzahl: 1)
scheinbar kann er den Bildertyp von der SVG Grafik nicht ermitteln.
in der in LoadFromFile > TImage32.LoadFromStream -> GetImageFormatClass Funktion ist die ImageFormatClassList leer. Deswegen findet er keinen passenden Bildtyp (siehe Anhang)... ich recherchiere weiter. |
AW: Delphi 12, skia, SVG > PNG, (SpeedButton)
Vielleicht musst Du explizit die SVG-Unit mit angeben.
![]() |
AW: Delphi 12, skia, SVG > PNG, (SpeedButton)
Super, vielen Dank - so hat es geklappt.
Diese Includes werden benötigt für die SVG -> PNG Konvertierung:
Code:
uses
img32, img32.Fmt.PNG, img32.Fmt.SVG ; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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