Laden...

Icon "zeichnen" per Code - gibt es einen eleganten Weg?

Erstellt von Pharao2k vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.211 Views
P
Pharao2k Themenstarter:in
100 Beiträge seit 2005
vor 17 Jahren
Icon "zeichnen" per Code - gibt es einen eleganten Weg?

Hiho Leutz,
Ich schreibe gerade eine Internetcafe-Verwaltungssoftware, bei dem auf jedem Client im Systray 2 Icons eingeblendet werden sollen, einer mit den bereits verursachten Kosten und einer mit der verstrichenen Zeit. Den jeweiligen Wert muss ich per Code schreiben da es ja viel zu viele Kombinationen gäbe als dass man dafür fertige Icons nehmen kann.
Meine bisher einzige Idee war, die einzelnen Pixel, die eine Ziffer ergeben, manuell zu setzen, also eine Methode um eine 1 zu schreiben bspw. (etwa 15 Zeilen Code nur dafür), daher meine Frage, gibt es dafür einen eleganteren Weg? Bspw. per Font eine Grafik zu erzeugen und das in ein Icon umzuwandeln?

Schonmal Danke im voraus,
CU Pharao2k

121 Beiträge seit 2006
vor 17 Jahren

Hallo Pharao2k,

Auf keinen Fall selbst die Zeichen rendern... da wirst Du ja nicht glücklich 🙂
Nimm z.B. DrawString, um beliebigen Text mit gewünschter Schrift in ein Bitmap zu plazieren. Und das Ergebnis dann in ein Icon umwandeln. Letzteres hab ich noch nicht gemacht, aber Vorschlag hört sich vielversprechendn an (per Stream).

Gruß Hape

 
...
Bitmap b = new Bitmap(bruttobreite, hoehe);
Graphics g = Graphics.FromImage(b);
Font f = new Font("MeinFontName", 16, FontStyle.Regular);
g.DrawString("12345", f, brush, new PointF(10, 15));
...

P
Pharao2k Themenstarter:in
100 Beiträge seit 2005
vor 17 Jahren

Sieht schonmal viel eleganter aus, aber wie krieg ich das Icon von Graphics in mein Bitmap wieder zurück? Beide Klassen scheinen da nichts anzubieten und mit dem Stream schein ich nicht auf Graphics zugreifen zu können.

121 Beiträge seit 2006
vor 17 Jahren

Hi Pharao2k,
wenn Du aus dem Icon dann wieder ein Bitmap machen willst,

System.Drawing.Icon x;
x.ToBitmap()

Gruß Hape

P
Pharao2k Themenstarter:in
100 Beiträge seit 2005
vor 17 Jahren

Das ist mir schon klar aber wie krieg ich vom Graphics Objekt das in ein anderes Objekt?

121 Beiträge seit 2006
vor 17 Jahren

Hi Pharao2k,


Bitmap b = new Bitmap(bruttobreite, hoehe);
Graphics g = Graphics.FromImage(b);

wenn Du mit g arbeitest, also drin rummalst, mit DrawString, etc., dann schlägt sich das auf das Bitmap b nieder. Am Ende der Malerei kannst Du also b als Ergebnis verwenden. Das Graphics Objekt g kann man einfach links liegen lassen, wird ja nicht mehr gebraucht.

Gruß Hape