⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main1.c

📁 如何编写自己的图形开发包 利用tc2.0在DOS下编写一个功能完整的图形开发包。并有详细浅显的文章耐心逐步讲解。
💻 C
字号:
#include "GrTry.c"

typedef struct tagRGBBMP     /* 用于读取16B实际图像数据               */
{
    UINT16  r:5;
    UINT16  g:6;
    UINT16  b:5;
} RGBBMP16;



void Dot16(INT16 x, INT16 y, UINT16 color);     /* 16B模式画点函数    */
void Dot16(INT16 x, INT16 y, UINT16 color)
{
    static  UINT8 OldPage = 0;
    UINT32  PageAll1, PageAll2;
    UINT8   NewPage;

    if (x > -1 && x < COLS && y > -1 && y < ROWS)
    {
        PageAll1 = PageAll2 = (UINT32)y*((UINT32)COLS*2)+((UINT32)x*2);
        NewPage = PageAll1 >> 16;
        if (NewPage != OldPage)
        {
            OldPage = NewPage;
            SelectPage(NewPage);
        }

        *((UINT16 far *)(VideoBuffer + PageAll2)) = color;
    }
}



int main()
{
    INT16   fp;
    INT16   i, j;
    UINT32  Width, Height, Linebytes;

    /* 比较之前的定义 */
    UINT16      Buffer[640];
    RGBBMP16    RGBBuffer[640];
    /*----------------*/

    struct  REGPACK reg;


    InitSVGA();                     /* 图形初始化开始   */
    SetSVGAMode(TRY640X480X16B);    /* 实现图形模式     */


    if ((fp = open("16b.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*2+(4-(Width*2)%4);
    }
    else
    {
        Linebytes = Width*2;
    }


    /*----------由于是高彩-16B,不存在设置调色板一说----------*/
    lseek(fp, 54L, SEEK_SET);       /* 跳到图像数据区   */
    for (i = Height; i > -1; i--)
    {
        /*read(fp, RGBBuffer, Linebytes); 一次读取一行     */
        /*memcpy(Buffer, RGBBuffer, Linebytes);*/
        read(fp, Buffer, Linebytes);
        for (j = 0; j < Width; j++)
        {
            Dot16(j, i, Buffer[j]);
        }
    }
    close(fp);


    getch();
    ExitSVGA();                     /* 恢复原始的模式   */
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -