/*
VGA256.c -- VGA 256 色编程
*/
#include "dos.h"
#include "conio.h"
#include "stdio.h"
void InitScr();
void RstScr();
void PutPoint(int x, int y, int Color);
void Rect(int x1, int y1, int x2, int y2, int Color);
void LineV(int x1, int y1, int x2, int y2, int Color);
int main()
{
int x1, y1, x2, y2, i, j;
x1 = y1 = 0;
x2 = 319;
y2 = 199;
InitScr();
for (i = 0; i < 256; i++)
LineV(i, 0, i, 199, i);
for( i = 18; i < 100; i++)
Rect(x1++, y1++, x2--, y2--, i);
for( i = 18; i < 50; i++)
Rect(x1--, y1--, x2++, y2++, i);
getch();
RstScr();
}
void InitScr()
{
union REGS In;
In.x.ax = 0x13; /*进入13H模式 */
int86(0x10, &In, &In);
}
void RstScr()
{
union REGS In;
In.x.ax = 0x03; /* 退出13H模式 */
int86(0x10, &In, &In);
}
/* 直接写视频缓冲区 */
void PutPoint(int x, int y, int Color) /* 画点函数 */
{
char far *p;
p = (char far *) (0x0a0000000L);
* (x+y*320+p) = Color;
}
/* 利用VGA BIOS中断在屏幕上画点, 速度慢
void PutPoint(int x, int y, int Color)
{
union REGS In;
In.h.ah = 0x0C;
In.h.al = Color;
In.x.cx = x;
In.x.dx = y;
In.h.bh = 0;
int86(0x10, &In, &In);
}
*/
void LineV(int x1, int y1, int x2, int y2, int Color) /* 画一垂直线 */
{
int i;
for (i = 0; i < 199; i++)
PutPoint(x1, i, Color);
}
void Rect(int x1, int y1, int x2, int y2, int Color) /* 画一矩形*/
{
int i;
for(i = x1; i <= x2; i++)
{
PutPoint(i, y1, Color);
PutPoint(i, y2, Color);
}
for(i = y1; i <= y2; i++)
{
PutPoint(x1, i, Color);
PutPoint(x2, i, Color);
}
}
147.VGA256色模式编程
最新推荐文章于 2022-12-24 22:27:36 发布