Einsatz von Iconfonts auf Buttons

Rund um die LCL und andere Komponenten
Antworten
kirchfritz
Beiträge: 219
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Einsatz von Iconfonts auf Buttons

Beitrag von kirchfritz »

Hallo,

ich habe immer wieder die Anforderung auf dem Tisch, dass ich auf Schaltflächen Icons aus der fontawesom-TTF Datei benutzen möchte. Dabei ergeben sich folgende grundlegenden Probleme:

a) Auf Schaltflächen (egal ob TButton, TSpeedButton, TBCButton, TColorSpeedButton) gibt es die Eigenschaft "Glyph". Hier muss man eine Rastergrafik aus einer expliziten Datei laden. Wenn man ein Icon aus einem Icon-Font verwenden will, ist dies zunächst nicht möglich, weil die Rastergrafik initial schon mal nicht existiert. Ich habe ja nur eine Font-Datei.

b) Auf Schaltflächen (egal ob TButton, TSpeedButton, TBCButton, TColorSpeedButton) gibt es die Eigenschaft "Imagelist". Hier kann man mehrere Rastergrafiken aus expliziten Datei reinladen laden. Wenn man ein Icon aus einem Icon-Font verwenden will, ist dies auch nicht möglich, weil die Rastergrafiken initial schon mal nicht existieren. Ich habe ja nur eine Font-Datei.

Meine Schlußfolgerung daraus: ICON-Fonts sind nicht geeignet für Schaltflächen!

Mein bisheriger Workaround:
Ich habe mir mit Lazarus ein kleine schnuckelige Anwendung geschrieben, die aus einem Iconfont alle Zeichen als PNG-Datei abspeichert, mit den Auswahlmöglichkeiten für die Dimension der PNG-Datei und Zeichenfarbe.
Dann habe ich alle Zeichen als Rastergrafik und kann sie seit Lazarus 4.0 auch mit Hilfe der Icon-Suche in Imagelisten oder Glyphs einsetzen.

Leider ist dies alles sehr umständlich!!!
Für alle eventuell benötigten Icongrößen 16x16, 24x24, 32x32, 36x36, 48x48, 64x64, 128x128 die PNG-Dateien abspeichern ist ja noch einigermaßen machbar. Wenn dann allerdings die Einfärbung gefragt ist, artet dies alles komplett aus.

Hat jemand einen Lösungsvorschlag?

Ich denke da an so was wie:
Zur Designzeit müsste man bei der Auswahl der "Glyph" Eigenschaft oder beim Befüllen einer Imageliste "Fontname", "Zeichenposition im Font", "Glyphgröße" und "Glyphfarbe" angeben können.

Viele Grüße
Fritz

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Einsatz von Iconfonts auf Buttons

Beitrag von Socke »

Du kannst die Schriftart im Betriebssystem installieren, dann dem Button zuweisen und in der Caption das gewünschte Symbol als Text zuweisen. Dazu reicht ein ganz normaler TButton aus; die Ausgabe funktioniert auch an allen anderen Stellen, wo du Texte ausgeben kannst. Glyph und ImageList brauchst du dazu nicht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
theo
Beiträge: 10880
Registriert: Mo 11. Sep 2006, 19:01

Re: Einsatz von Iconfonts auf Buttons

Beitrag von theo »

Wenn du nichts installieren möchtest, kannst du es mit LazFreeType versuchen.
Da muss man sich allerdings etwas damit beschäftigen.
Im Verzeichnis "../lazarus/examples/lazfreetype/" gibt es ein Beispiel.

EDIT: Hab's grad mal (rudimentär) ausprobiert.
lazfreetype.png
lazfreetype.png (19.35 KiB) 4602 mal betrachtet

kirchfritz
Beiträge: 219
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Einsatz von Iconfonts auf Buttons

Beitrag von kirchfritz »

Socke hat geschrieben: Mi 7. Mai 2025, 09:01 Du kannst die Schriftart im Betriebssystem installieren, dann dem Button zuweisen und in der Caption das gewünschte Symbol als Text zuweisen. Dazu reicht ein ganz normaler TButton aus; die Ausgabe funktioniert auch an allen anderen Stellen, wo du Texte ausgeben kannst. Glyph und ImageList brauchst du dazu nicht.
Hallo Socke,
solange der Button keine Caption hat, funktioniert der Lösungsansatz.
Leider habe ich oft Schaltflächen mit Glyph UND Captiontext. Wenn dann auch noch farbige Glyphen bei schwarzen Captiontext gewünscht ist, hilft diese Lösung allerdings nicht.

Benutzeravatar
Ally
Beiträge: 282
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Einsatz von Iconfonts auf Buttons

Beitrag von Ally »

Hallo kirchfritz,

anbei eine Lösung die sich mit Inkscape und einer Batch-Datei realisieren lässt.

Dazu die gewünschten Icons im SVG-Format bei GitHub herunterladen (https://github.com/FortAwesome/Font-Awesome) und in den Ordner MakePNG kopieren.
Dann die Batch-Datei Make_PNG.cmd starten (die Batch-Datei nutzt für die Konvertierung Inkscape!).
Jetzt werden alle SVG-Dateien in PNG-Dateien konvertiert und im Ordner PNG abgelegt.

Sollen die Icons eine andre Farbe bekommen, ist noch ein weiterer Schritt nötig.
Dazu benötigt man einen Editor der in mehreren Dateien gleichzeitig Suchen/Ersetzen kann, z.B. den Lazarus-Editor.
Man öffnet dann alle SVG-Dateien, sucht nach ["/>] und ersetzt es durch [" fill="#ff6600"/>] (ohne die eckigen Klammern).
#ff6600 ist dabei der Farbcode, der nach Gusto angepasst werden kann.

Die Batch-Datei Make_PNG.cmd erzeugt die Icongrößen 16x16, 24x24 und 32x32, kann aber beliebig erweitert werden.

Gruß
Roland
Dateianhänge
MakePNG.zip
(2.68 KiB) 58-mal heruntergeladen

kirchfritz
Beiträge: 219
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Einsatz von Iconfonts auf Buttons

Beitrag von kirchfritz »

Falls sich überhaupt noch jemand für dieses Thema interessiert:
Ich habe auf GITHUB eine FontImageList Componente entdeckt.
Guckst Du hier:https://github.com/1-berto/FontImageList

Das hier ist die kurze Beschreibung:
TFontImageList
The TFontImageList is a Lazarus component that store glyphs/images used by graphic controls. The component generates its own images using an installed font. It work just like a TImageList but using code point of installed font on development computer. The images are built in design-time and dont require the font installed on deployment. So you dont need redistribute the font with your software or access the internet to get it. Some fonts are made for this purpose and we take advantage of this for generate a monochrome glyphs/images like websites and mobile apps does.

Ich habe die Komponente erfolgreich zum Einsatz gebracht, sprich sie lässt sich installieren unter LAZARUS 4.0 und Windows.
Und meine Icon-Font-TTF-Dateien erblühen damit zu neuem Leben.

☀️ License
This software is released under Modified LGPL(with linking exception, same of LCL).
This is a free software, inclusive for commercial use and modifications under the license terms.

Also wie gesagt, für denjenigen, der noch Interesse an der Verwendung von Iconfonts hat...

Antworten