Seite 1 von 1

Icons mit Buchstaben und Zahlen generieren

Verfasst: Fr, 12. Mai 2023 8:44
von ssemleit
Hallo,

kennt jemand einen Weg, wie man Icons aufgrund eines Textes und eines Hintergrunds generieren kann.

Aktuell haben wir im Sprachgebrauch des Anwenders "Gelbes O" oder "Grünes K" etc.
Ist historsch gewachsen und das kriegen wir auch nicht mehr weg.
"Gelbes O"
Gelbes O
Gelbes O
O.png (2.31 KiB) 2236 mal betrachtet
"Grünes K"
Grünes K
Grünes K
K.png (2.37 KiB) 2236 mal betrachtet
Die aktuellen Icons sehen etwas altbacken aus und ich würde gerne automatisiert neue erstellen.

Ich stelle mir vor, dass der Hintergrund als Icon angegeben wird und per Schriftart und -größe soll
ein Buchstaben oder eine Zahl über das Icon gepinselt werden.
Daraus möchte ich dann eine neue Icon-Datei mit unterschiedlichen Auflösungen erstellen
Icon muss sein, da wir das in unzähligen Ressourcen haben und ich da nix ändern will.

Re: Icons mit Buchstaben und Zahlen generieren

Verfasst: Fr, 12. Mai 2023 11:03
von hel-systems
ich bin mir nicht sicher ob das für dich der richtige Weg ist, vielleicht klappt das mit ImageMagick (das kann soweit ich weiss ico-Files erstellen).

Du nimmst eine rein weisse png mit 256x256 als Grundlage, dann kannst du mit convert von imagemagick das weiss gegen die von dir gewünschte Farbe tauschen (convert weiss256.png -fuzz 0% -fill rgb(x,y,z) neu256.png), dann den Buchstaben drauf schreiben (convert neu256.png -gravity center -pointsize 20 -annotate 0 'X' neu256.png), dann resize in die verschiedenen Größen (convert neu256.png -resize 128x128 neu128.png usw mit 96,64,48,32 was man alles braucht) und zum Schluß das ganze als ico ausgeben (convert neu256.png neu128.png neu96.png ... neu.ico)

Ich bin mir bei den Parametern nicht ganz sicher.
Aber das in einem Batch sollte dein Problem wenn ich dich richtig verstanden habe lösen.

Bis dann
Helmut

Re: Icons mit Buchstaben und Zahlen generieren

Verfasst: Fr, 12. Mai 2023 11:12
von ssemleit
Hallo Helmut,

danke für den Tipp. Ich werde damit mal testen und berichten.

Re: Icons mit Buchstaben und Zahlen generieren

Verfasst: Fr, 12. Mai 2023 11:39
von Tom
Wir machen das mit Ownerdrawing, etwa, um bei einem aktiven Filter in einem kleinen Kreis die Anzahl der Treffer zu zeigen, oder im Nachrichtensystem die Anzahl der Nachrichten. Das ist flexibler und kostet nicht so viele Ressourcen, aber es nutzt auch die alte GDI (Kreise sind also eher Vielecke) und man kann das Icon selbst nicht als PS verwenden.
icons.png
icons.png (15.17 KiB) 2196 mal betrachtet
Edit: Dass es etwas unsauber aussieht, liegt an der Vergrößerung des Screenshots. Die Icons selbst sind kantenglatt.

Re: Icons mit Buchstaben und Zahlen generieren

Verfasst: Fr, 12. Mai 2023 11:47
von ssemleit
Ich bin da schon auf "fertige" .ico angewiesen, da wir die Icons u.a. in HTML-Elementen (::visualStyle,::caption) und XbpToolBar verwenden.

Re: Icons mit Buchstaben und Zahlen generieren

Verfasst: Fr, 12. Mai 2023 18:01
von AUGE_OHR
hi,
numerischen Resource-Id, sowie XbpBitmap- oder XbpIcon-Objekts
es muss kein Icon sein, es geht auch Bitmap & Co

nun kann man eine Bitmap leicht "selbst" erstellen
diese Method verwende ich bei DragDrop um "anzuzeigen" was ich verschieben will

Code: Alles auswählen

METHOD DXEMultiCellgroup:_Text2BMP( cText, aRect )
LOCAL oBitmap := XBPBITMAP() :new() :create()
LOCAL oPS     := XBPPRESSPACE() :new()
LOCAL oFont   := XBPFONT() :New()
LOCAL cFont   := FONT_DEFFIXED_SMALL
LOCAL nSizeX  := aRect[ 3 ] - aRect[ 1 ]
LOCAL nSizeY  := aRect[ 4 ] - aRect[ 2 ]
LOCAL nColor  := GRA_CLR_WHITE
LOCAL nClr
LOCAL nStart  := 1
LOCAL nPosi   := 0

   nColor := ::_HiliteText( @cText )
   IF nColor == 33554431
      nClr := 16777216
   ELSE
      nClr := 33554431
   ENDIF
   oBitmap:transparentClr := nClr

   oPS:create( oBitmap, { nSizeX, nSizeY } )

   oBitmap:presSpace( oPS )
   oBitmap:make( nSizeX, nSizeY )

   oFont:Create( cFont )
   GraSetFont( oPS, oFont )

   GraSetColor( oPS, nColor, nColor )
   GraBox( oPS, { 0, 0 }, { nSizeX, nSizeY }, 1 )

   nPosi := AT( CRLF, cText, nStart )
   IF nPosi > 0
      cText := SUBSTR( cText, nStart, nPosi - 1 )
   ELSE
      cText := SUBSTR( cText, nStart )
   ENDIF

   GraSetColor( oPS, GRA_CLR_BLACK, nColor )
   GraStringAt( oPS, { 10, 0 }, cText )

   FERASE( "DragDrop.JPG" )
   oBitmap:SaveFile( "DragDrop.JPG", XBPBMP_FORMAT_JPG, 50 )

RETURN oBitmap
p.s. das Original XbpToolbar() benötig ""MsComCtl.OCX" was NICHT Bestandteil eines "aktuellen" OS ist

Re: Icons mit Buchstaben und Zahlen generieren

Verfasst: Mo, 15. Mai 2023 9:22
von ssemleit
@Helmut
Mit ImageMagick kommen wir gut klar. Danke!
Die Kollegen können damit selbständig ohne Programmierung verschiedene Schriftgrößen, Farbe etc. in Ruhe ausprobieren.
Ich binde dann nur noch die geänderten Files in die Ressourcen ein und fertig :D

@Jimmy
Danke für die Hinweise.