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
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));
...
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.
Hi Pharao2k,
wenn Du aus dem Icon dann wieder ein Bitmap machen willst,
System.Drawing.Icon x;
x.ToBitmap()
Gruß Hape
Das ist mir schon klar aber wie krieg ich vom Graphics Objekt das in ein anderes Objekt?
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