2009-12-08 9 views
8

Wie kann ein Programm Text auf einem Frame-Buffer zeichnen, der als Array zugeordnet ist? Was benötigt wird, ist sowohl ein Mittel zum Darstellen der individuellen Zeichen als auch zum Zeichnen der Zeichen Pixel für Pixel in einer Weise, die nicht zu ineffizient ist. Die Repräsentation der Zeichen sollte idealerweise ausschließlich in Code definiert werden, und keine Bibliotheken von Drittanbietern wären erforderlich.Zeichnen von Text auf einem Framebuffer unter Linux von C

Kennt jemand Code, um dies unter einer liberalen Lizenz zu tun? Oder ein Werkzeug zum Erzeugen von Datendefinitionen für die Schriftart zur Verwendung in Programmcode z.B. das Array von Bitmap-Zeichen/Zeichenwerten?

+0

Möchten Sie das Ergebnis auf einem Bildschirm anzeigen oder in eine Datei schreiben? –

+1

Zur Anzeige auf dem Bildschirm, idealerweise bis zu 60 fps – grrussel

Antwort

3

Ich habe keine Informationen speziell für Frame-Puffer, aber ich habe eine interessante Möglichkeit, eine Schriftart zu kodieren.

Wenn Sie über eine Anwendung verfügen, die in XBM format schreiben kann, können Sie eine Schriftart codieren, indem Sie einfach ein Bild erstellen, das alle Zeichen enthält. Die XBM-Datei kann als C- oder C++ - Datei enthalten sein, und durch Verwendung der richtigen Offsets können Sie leicht auf ein einzelnes Zeichen zugreifen. Stellen Sie sicher, dass jedes Zeichen an einer X-Koordinate beginnt, die durch 8 teilbar ist, da das Bild als ein Bit pro Pixel kodiert wird; alles, was sich nicht an einer 8-Bit-Grenze anordnet, muss maskiert und verschoben werden.

-3

Um eine Linie auf einem 2D-Array zu zeichnen, verwenden Sie Besengam's algorithm.

Um die Zeichen mit geraden Linien zu zeichnen, erstellen Sie Ihr Alphabet mit einer Reihe von moveTo, lineTo. Z.B. für ein einfaches 'L':

image.moveTo(0,-fontHeight); 
image.lineTo(0, 0); 
image.lineTo(fontWidth,0);