|
![]() | 作者: sdf [yaojbo]
![]() |
登录 |
char far *screen=(char far* )0xb8000000; void putchxy(int y,int x,char ch,char fc,char bc) { screen[(x*160)+(y<<1)+0]=ch; screen[(x*160)+(y<<1)+1]=(bc*16)+fc; } |
地主 发表时间: 04-01-03 19:32 |
![]() | 回复: 286 [unique] ![]() |
登录 |
直接写屏技术。 直接向屏幕缓冲区写入数据,现在很少用了。 |
B1层 发表时间: 04-01-05 09:29 |
![]() | 回复: yingzike [yingzike] ![]() |
登录 |
你要直接写屏干嘛,最多也只有256/2个中文。如果你想写中文的话 DOS时代的经典,可以在字符界面写中文,不过就是不能写太多 晕。 |
B2层 发表时间: 04-01-05 19:39 |
![]() | 回复: andromeda [andromeda] ![]() |
登录 |
//看来这个是Dos下的东西了 //直接指向VGA的buffer //一般必须使用类型 char far * char far *screen=(char far* )0xb8000000; void putchxy(int y,int x,char ch,char fc,char bc) { //分辨率是X=160 //因为是对指针,所以可以用操作数组的方法进行 screen[(x*160)+(y<<1)+0]=ch; screen[(x*160)+(y<<1)+1]=(bc*16)+fc; } 如果是在Unix中就么如下 // // //写个大概 ..... //打开FrameBuffer //下面的代码支持Soalris/BSD/Linux char *buffer=NULL; ........ if((screen=open("/dev/fb0",O_RDONLY|O_WRONLY))<0) { perror("failed to open framebuffer device\n"); return -EFAULT; } //调用ioctl()设置属性 //映射 buffer=mmap(...) // //写屏幕 *(buffer+0)=... .... close(screen); |
B3层 发表时间: 04-01-06 17:39 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号