📄 main2.c
字号:
#include "GrTry.c"
typedef struct tagRGBBMP /* 用于读取24B实际图像数据 */
{
UINT8 r;
UINT8 g;
UINT8 b;
} RGBBMP24;
void Dot24(INT16 x, INT16 y, UINT32 *color); /* 24B模式画点函数 */
void Dot24(INT16 x, INT16 y, UINT32 *color)
{
static UINT8 OldPage = 0;
UINT32 PageAll1, PageAll2;
UINT8 NewPage;
RGBBMP24 k;
if (x > -1 && x < COLS && y > -1 && y < ROWS)
{
PageAll1 = PageAll2 = (UINT32)y*((UINT32)COLS*4)+((UINT32)x*4);
NewPage = PageAll1 >> 16;
if (NewPage != OldPage)
{
OldPage = NewPage;
SelectPage(NewPage);
}
*((UINT32 far *)(VideoBuffer + PageAll2)) = *color;
}
}
int main()
{
INT16 fp;
INT16 i, j;
UINT32 Width, Height, Linebytes;
/* 比较之前的定义 */
RGBBMP24 RGBBuffer[640];
/*----------------*/
struct REGPACK reg;
InitSVGA(); /* 图形初始化开始 */
SetSVGAMode(TRY640X480X24B); /* 实现图形模式 */
if ((fp = open("24b.bmp", O_RDONLY|O_BINARY)) == -1)
{
printf("can't open the file!");
getch();
return 0;
}
lseek(fp, 18L, SEEK_SET); /* 读取文件宽高 */
read(fp, &Width, 4);
read(fp, &Height, 4);
if (Width%4) /* 拼凑4字节倍数 */
{
Linebytes = Width*3+(4-(Width*3)%4);
}
else
{
Linebytes = Width*3;
}
/*----------由于是高彩-24B,不存在设置调色板一说----------*/
lseek(fp, 54L, SEEK_SET); /* 跳到图像数据区 */
for (i = Height; i > -1; i--)
{
read(fp, RGBBuffer, Linebytes); /* 一次读取一行 */
for (j = 0; j < Width; j++)
{
Dot24(j, i, (UINT32 *)&RGBBuffer[j]);
}
}
close(fp);
getch();
ExitSVGA(); /* 恢复原始的模式 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -