| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 948 人关注过本帖
标题:直接写屏不知有什么问题
只看楼主 加入收藏
hjj1123
Rank: 1
等 级:新手上路
帖 子:198
专家分:0
注 册:2006-7-29
收藏
 问题点数:0 回复次数:3 
直接写屏不知有什么问题
#define VGA256 Ox13
#define TEXT_MODE Ox03
#include<process.h>
#include<dos.h>
#include<stdio.h>
void main()
{ int i;
union REGS inregs,outregs;
inregs.h.ah=0;
outregs.h.al=(unsigned char)VGA256;
int86(Ox10,&inregs,&outregs);//进入图形模式
unsigned char far *buffer=(char far *)OxA0000000L;
for(x=100,y=100;x<=300;x++)//画点
buffer[((y<<8)+(y<<6))+x)]=12;
getch();
}
这个程序在编译的时候到处都是错,我自己根本找不到.希望那位大虾帮忙看看到底在那出了问题,本人不胜感激.
搜索更多相关主题的帖子: void 图形 include 
2006-07-29 00:21
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
收藏
得分:0 
朋友,由于直接写屏,显存是分页的,所以你直接用个for()来画点,当然会出错,你可以到网站中下载 JS256色图形包,看看里面的硬件设置和画点函数是怎么处理的,那代码比较直观,好好看看就能弄懂

个人网站 -  http://.h001.
2006-07-29 08:13
hjj1123
Rank: 1
等 级:新手上路
帖 子:198
专家分:0
注 册:2006-7-29
收藏
得分:0 
这个程序不仅是画不了图,还有很多错误根本不知道错在那.什么不认识Ox10,int i;定义错误啊.这是怎么回事?

qq:674940174
2006-07-29 18:19
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
收藏
得分:0 

我只能说可能你对显卡硬件不了解,具体怎么配置也不是一两句话可以说清楚,我这样给出 JS256图形包 的少量代码,希望对你有所帮助:

初始化硬件
void set_SVGA_mode(int vmode) /*设置SVGA屏幕模式*/
{
int i;
union REGS r;

switch(vmode)
{
case 0x13:
COLS = 320;
ROWS = 200;
break;
case 0X100:
COLS = 640;
ROWS = 400;
break;
case 0X101:
COLS = 640;
ROWS = 480;
break;
case 0X103:
COLS = 800;
ROWS = 600;
break;
case 0X105:
COLS = 1024;
ROWS = 768;
break;

}
r.x.ax=0x4f02;
r.x.bx=vmode;
int86(0x10,&r,&r);
}

这就是SVGA模式对256色下各分辨率的设置,这样设置好后,我们就进入了256色图形模式,那首要的就是我们建立画点函数

void dot(int x, int y, unsigned char color)
{
char page_new_dot1;

page_new_dot1 = (y*(long)COLS+x)/65536l; /*计算显示页*/

if(x > -1 && x < COLS &&
y > -1 && y < ROWS) /*在屏幕范围*/
{
if(x > screen_left-1 && x < screen_right &&
y > screen_top-1 && y < screen_bottom ) /*screen()函数设定的范围*/
{
if(page_new_dot1 != page_old_dot1)
{
selectpage(page_new_dot1);
page_old_dot1 = page_new_dot1;
}
video_buffer[y*COLS+x] = color; /*画点函数,直接将color写入显存, *video_buffer 为指向显存的指针*/
}
}
}

这里,要注意的就是对页面的计算,你必须配置好正确的页面画点的位置才能正确。仔细看看,应该会有所帮助的

[此贴子已经被作者于2006-7-29 19:50:14编辑过]


个人网站 -  http://.h001.
2006-07-29 19:48
快速回复:直接写屏不知有什么问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016556 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved