扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
framebuffer(帧缓冲)。
成都创新互联公司是一家专业提供招远企业网站建设,专注与网站建设、做网站、H5场景定制、小程序制作等业务。10年已为招远众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
帧的最低数量为24(人肉眼可见)(低于24则感觉到画面不流畅)。
显卡与帧的关系:由cpu调节其数据传输速率来输出其三基色的配比。
三基色:RGB(红绿蓝)。
在没有桌面和图形文件的系统界面,可以通过C语言的编程来实现在黑色背景上画图!
用下面的代码,在需要的地方(有注释)适当修改,就能画出自己喜欢的图形!
PS:同样要编译运行后才能出效果。
#include stdio.h
#include sys/mman.h
#include fcntl.h
#include linux/fb.h
#include stdlib.h
#define RGB888(r,g,b) ((r 0xff) 16 | (g 0xff) 8 | (b 0xff))
#define RGB565(r,g,b) ((r 0x1f) 11 | (g 0x3f) 5 | (b 0x1f))
int main()
{
int fd = open("/dev/fb0", O_RDWR);
if(fd 0){
perror("open err. \n");
exit(EXIT_FAILURE);
printf("xres: %d\n", info.xres);
printf("yres: %d\n", info.yres);
printf("bits_per_pixel: %d\n", info.bits_per_pixel);
size_t len = info.xres*info.yres*info.bits_per_pixel 3;
unsigned long* addr = NULL;
addr = mmap(NULL, len, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
if(addr == (void*)-1){
perror("mmap err. \n");
此题把数学问题转化为用C语言描述即可,很多画图问题可以使用这种方法。
假设屏幕左上角为坐标轴原点
也就是把我们的屏幕当作第一象限时,代码如下
#include stdio.h
#define MAX 30 // 选定曲线要显示的范围,因为一次函数是一条直线,所以它的显示范围无穷
int main()
{
int x, y;
for (y = 0; y MAX; y++) // 因为我们的光标是向下,向右增长。这里设定y为纵坐标
{
for (x = 0; x MAX; x++)
{
if (y == 2 * x + 5)
{
printf("*");
}
else
{
printf(" "); // 空格,不满足y=2x+5的点
}
}
printf("\n"); // x轴已经到显示范围,所以需要换行。
}
return 0;
}
2. 更换坐标轴原点显示
#include stdio.h
#define MAX 30 // 选定曲线要显示的范围,因为一次函数是一条直线,所以它的显示范围无穷
int main()
{
int x, y;
for (y = 30; y = 0; y--)
{
for (x = 0; x MAX; x++)
{
if (y == 2 * x + 5)
{
printf("*");
}
else
{
printf(" "); // 空格,不满足y=2x+5的点
}
}
printf("\n"); // x轴已经到显示范围,所以需要换行。
}
return 0;
}
需要Window图像编程,Window编程就是基于C语言的,在Visual C++6.0可以编写Win32程序
和数学上一样啊 来个坐标x,y 分别表示列和行 。在函数上就打印一个* 给个范围,双层循环加条件就可以了
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流