从C中在Linux上的framebuffer上绘制文本

时间:2009-12-08 20:43:06

标签: c++ c linux graphics framebuffer

程序如何在作为数组映射的帧缓冲区上绘制文本?所需要的是表示各个字符的手段,以及以不太低效的方式逐个像素地绘制字符。理想情况下,字符的表示应仅在代码中定义,并且不需要第三方库。

有没有人知道在自由许可下可以执行此操作的代码?或者用于生成用于程序代码的字体的数据定义的工具,例如位图字形/字符值数组?

3 个答案:

答案 0 :(得分:3)

我没有任何特定于帧缓冲区的信息,但我确实有一种编码字体的有趣方法。

如果您的应用程序可以写入XBM format,则只需创建包含所有字符的图像即可对字体进行编码。 XBM文件可以作为C或C ++文件包含在内,通过使用适当的偏移量,您可以轻松访问单个字符。确保每个字符都从可被8整除的X坐标开始,因为图像编码为每像素一位;任何不在8位边界上排队的东西都需要屏蔽和移位。

答案 1 :(得分:1)

我认为最好的方法是使用位图字体:http://www.iua.upf.es/~ggeiger/redbookhtml/ch09.html。本教程适用于OpenGL,但您可能会发现很多有用的信息。

答案 2 :(得分:-3)

要在2D阵列上绘制线条,请使用Besengam's algorithm

要使用直线绘制字符,请使用一系列moveTo,lineTo构建字母。例如。对于一个简单的'L':

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