Hallo,
ich versuche ein Applet für ein extern angeschlossenes Display zu schreiben. Ich setze auf eine Linklibrary auf, die mir lediglich erlaubt Bilder in Form eines Byte-Arrays an das Display zu senden.
Ich möchte nun gerne dem aktuellen Display einen Text hinzufügen und habe hierfür folgenden Quelltext geschrieben:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| private void drawString(string text, int x, int y) { MemoryStream ms = new MemoryStream(buf); Image img = Image.FromStream(ms); Graphics g = Graphics.FromImage(img); g.DrawString(text, new Font("Sans Serif", 1), new SolidBrush(Color.Red), x, y); img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); buf = ms.ToArray(); for (int i = 0; i < 160 * 43; i++) if (buf[i] > PIXEL_OFF) buf[i] = PIXEL_ON; } |
Dies ist zwar kompilierbar, jedoch bekomme ich einen Laufzeitfehler in Zeile 4, mit der Fehlermeldung, dass ein falscher Parameter angegeben sei. buf ist folgenderweise deklariert:
C#-Quelltext
1: 2:
| byte[] buf = new byte[160 * 43]; for(int i = 0; i < 160 * 43; i++) buf[i] = 0; |
Für Hilfe wäre ich sehr dankbar, auch nehme ich gerne Vorschläge an, das ganze geschickter zu gestalten, da mir das Hin- und herkonvertieren zwischen Byte-array und Image doch sehr kompliziert erscheint.