4

我是 Linux 系统调用的新手。我的问题是我们在 Linux 中是否有一个系统调用来在屏幕上绘制点。我用谷歌搜索了它,但找不到任何简单的解释。我想在 Linux 中编写一个简单的 C 程序,无需 C 图形库的帮助即可直接在屏幕上绘制一个点。

如果没有这样的系统调用,我如何创建自己的系统调用来在屏幕上绘制点?

4

2 回答 2

3

linux 上最低级别的硬件独立图形接口是framebuffer。这是通过写入设备节点(通常/dev/fb0是)来操作的,这相当于系统调用,因为它是向内核发送请求的一种方式。所以这不需要任何库。

一种常见的方法似乎是mmap()使用一块用户空间内存来表示屏幕/dev/fb0,然后对其进行操作。有一些ioctl()调用来获取有关帧缓冲区显示的信息。一个很好的信息起点是内核源代码中的文档——src/Documentation/fb是一个完整的目录,参见例如“framebuffer.txt”和“api.txt”。如果您在网上查看,则有一些教程等。你看哪个内核版本源并不重要——“api.txt”的最后一个版本是 2011 年,而“framebuffer.txt”是十年前的(所以接口非常稳定)。

请注意,您不能在 X 中使用帧缓冲区。如果您想在 X 中进行图形处理,则必须至少使用Xlib或基于此构建的更高级别的库。

于 2013-09-10T16:06:09.753 回答
1
#define MAX_SCREEN_AREA 100
int Gotoxy(int x, int y)
{
char essq[MAX_SCREEN_AREA]={0}; // String variable to hold the escape sequence
sprintf(essq, "\033[%d;%df", y,x);
printf("%s", essq);
return 0;
}

尝试这个。

于 2013-09-10T15:36:01.320 回答