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

📄 moveimg.c

📁 汉字系统的c源代码
💻 C
字号:
    /*-----------------------------------------------------------
        函数 _MoveImage : 在显示存储器中移动屏幕映象块。
    -----------------------------------------------------------*/
    #include <hanenv.h>

    void _Cdecl _MoveImage(col1,line1,width,high,col2,line2)
    int col1;          /* 屏幕图象块左上角列坐标(以字节为单位) */
    int line1;         /* 屏幕图象块左上角行坐标(以象素为单位) */
    int width;         /* 屏幕图象块宽度(以字节为单位)         */
    int high;          /* 屏幕图象块高度(以象素为单位)         */
    int col2;          /* 屏幕图象块新位置列坐标(以字节为单位) */
    int line2;         /* 屏幕图象块新位置行坐标(以象素为单位) */
    {
        register int i,j;
        unsigned char tmpreg;
        unsigned char far *sour;
        unsigned char far *dest;

        /*-- 设置显示寄存器操作标志 -----------*/
        _VideoBusy = YES;

        /*-- 确定源屏幕块和目标屏幕块的首地址 -*/
        sour       = MK_FP(0xa000,(line1+_ScreenTop)*_ScreenWidth+col1);
        dest       = MK_FP(0xa000,(line2+_ScreenTop)*_ScreenWidth+col2);

        /*-- 修改方式寄存器内容为写方式1 ------*/
        outportb(0x3ce,0x05);
        tmpreg     =  inportb(0x3cf);
        tmpreg    |= 0x01;
        outportb(0x3cf,tmpreg);

        /*-- 如果源块在目标块之后,正向拷贝 ----*/
        if(sour >= dest)
        {
            for(i=0;i<high;i++)
            {
                for(j=0;j<width;j++)
                    *(dest+j)=*(sour+j);
                dest += _ScreenWidth;
                sour += _ScreenWidth;
            }
        }

        /*-- 如果源块在目标块之前,反向拷贝 ----*/
        else
        {
            sour += (high-1)*_ScreenWidth+width-1;
            dest += (high-1)*_ScreenWidth+width-1;
            for(i=high-1;i>=0;i--)
            {
                for(j=0;j<width;j++)
                    *(dest-j)=*(sour-j);
                dest -= _ScreenWidth;
                sour -= _ScreenWidth;
            }
        }

        /*-- 恢复方式寄存器内容为写方式0 ------*/
        tmpreg &= 0xfc;
        outportb(0x3ce,0x05);
        outportb(0x3cf,tmpreg);
        _VideoBusy = NO;
    }

⌨️ 快捷键说明

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