Icons mit Buchstaben und Zahlen generieren

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
ssemleit
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 123
Registriert: Di, 08. Mär 2016 11:32
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal

Icons mit Buchstaben und Zahlen generieren

Beitrag 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) 2140 mal betrachtet
"Grünes K"
Grünes K
Grünes K
K.png (2.37 KiB) 2140 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.
Gruß
Stefan
Benutzeravatar
hel-systems
Rookie
Rookie
Beiträge: 16
Registriert: Mo, 30. Jul 2007 17:47
Wohnort: Nettetal
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Icons mit Buchstaben und Zahlen generieren

Beitrag 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
Zuletzt geändert von hel-systems am Fr, 12. Mai 2023 11:16, insgesamt 1-mal geändert.
Benutzeravatar
ssemleit
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 123
Registriert: Di, 08. Mär 2016 11:32
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal

Re: Icons mit Buchstaben und Zahlen generieren

Beitrag von ssemleit »

Hallo Helmut,

danke für den Tipp. Ich werde damit mal testen und berichten.
Gruß
Stefan
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Icons mit Buchstaben und Zahlen generieren

Beitrag 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) 2100 mal betrachtet
Edit: Dass es etwas unsauber aussieht, liegt an der Vergrößerung des Screenshots. Die Icons selbst sind kantenglatt.
Herzlich,
Tom
Benutzeravatar
ssemleit
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 123
Registriert: Di, 08. Mär 2016 11:32
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal

Re: Icons mit Buchstaben und Zahlen generieren

Beitrag von ssemleit »

Ich bin da schon auf "fertige" .ico angewiesen, da wir die Icons u.a. in HTML-Elementen (::visualStyle,::caption) und XbpToolBar verwenden.
Gruß
Stefan
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Icons mit Buchstaben und Zahlen generieren

Beitrag 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
gruss by OHR
Jimmy
Benutzeravatar
ssemleit
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 123
Registriert: Di, 08. Mär 2016 11:32
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal

Re: Icons mit Buchstaben und Zahlen generieren

Beitrag 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.
Gruß
Stefan
Antworten