zoukankan      html  css  js  c++  java
  • C言语图形情势编程,特性鼠标(3)

       #if WL > 1
                    setfillstyle(1 ,RIGHT_C);
                    floodfill(x 1 ,y 1 ,getcolor());
                #endif
            #else
                putpixel(x ,y ,RIGHT_C);
            #endif
        }
        else
        {
            #if WL > 1
                setcolor(LEFT_C);
                rectangle(x ,y ,x WL ,y HL);
                #if HL > 1
                    setfillstyle(1 ,LEFT_C);
                    floodfill(x 1 ,y 1 ,getcolor());
                #endif
            #else
                putpixel(x ,y ,LEFT_C);
            #endif
        }


        MsOn(x,y);
    }

    int Msinit()
    {   /* 初始化鼠标*/
        int recored;

        regs.x.ax=0;
        int86(0x33,&regs,&regs);
        recored=regs.x.ax;
        if(recored==0)
        {   printf("Mouse not found !\n");
            getch();return 0;
        }
        regs.x.ax = 1;  /* 显示鼠标*/
        int86(0x33,&regs,&regs);
        return recored;
    }

    void MskindMath()    /*比力争论鼠标的样子*/
    {   /*Point hotspot[]={{0,11},{0,0},{4,0},{4,0}};抢手*/
        int    i,j,jj,k;
        int    full,kind;
        long   UpNum[2][16] = {/*  hand */
            0xf3ff,0xe1ff,0xe1ff,0xe1ff,
            0xe001,0xe000,0xe000,0xe000,
            0x8000,0x0000,0x0000,0x0000,
            0x0000,0x0000,0x8001,0xc003,

            0x3fff,0x1fff,0x0fff,0x07ff,/*  arrow箭头 */
            0x03ff,0x01ff,0x00ff,0x007f,
            0x003f,0x00ff,0x01ff,0x10ff,
            0x30ff,0xf87f,0xf87f,0xfc3f,
        };
        long   DownNum[2][16]={/*  hand */
            0x0c00,0x1200,0x1200,0x1200,
            0x13fe,0x1249,0x1249,0x1249,
            0x7249,0x9001,0x9001,0x9001,
            0x8001,0x8001,0x4002,0x3ffc,

            0x0000,0x4000,0x6000,0x7000,/*  arrow箭头 */
            0x7800,0x7c00,0x7e00,0x7f00,
            0x7f80,0x7e00,0x7c00,0x4600,
            0x0600,0x0300,0x0300,0x0180,
        };
        kind = (Mskind>>1)%2;  /* 手形照样箭头*/
        full = Mskind%2;       /* 可否空心*/

        for(i=0;i<16;i )
        {
             j=jj=15;
             while(UpNum[kind][i]!=0)
             {
                 up[i][j]=UpNum[kind][i]%2;
                 j--;
                 UpNum[kind][i]/=2;
             }
             while(DownNum[kind][i]!=0)
             {
                 down[i][jj--]=DownNum[kind][i]%2;
                 DownNum[kind][i]/=2;
             }
             for(k=j ;k>=0;k--)  up  [i][k]=0;
             for(k=jj;k>=0;k--)  down[i][k]=0;
             for(k=0;k<16;k )
             {   /*四种组合方式*/
                 if(up[i][k]==0&&down[i][k]==0)
                 {   /* 可否为空心*/
                     if(full) mouse_draw[i][k]=1;
                     else     mouse_draw[i][k]=2;
                 }
                 else if(up[i][k]==0&&down[i][k]==1)
                 {
                     if(full) mouse_draw[i][k]=2;
                     else     mouse_draw[i][k]=1;
                 }
                 else if(up[i][k]==1&&down[i][k]==0) mouse_draw[i][k]=3;
                 else                                mouse_draw[i][k]=4;
             }
        }
        if(kind==1) mouse_draw[1][2]=0;/*稀奇点*/
        else        mouse_draw[1][2]=0;
    }

    void MsOn(int x,int y)
    {   /* 鼠标光标显示*/
        int  i,j;
        int  color[2];

        color[0]=Mskind>>2;
        color[1]=Mskind>>6;
        for(i=0;i<16;i )
        {
            for(j=0;j<16;j )
            {
                pixel_save[i][j]=getpixel(x j,y i);/* 生涯本来的颜色*/
                if(mouse_draw[i][j]==1)
                   putpixel(x j,y i,color[0]);
                else if(mouse_draw[i][j]==2)       /* 画鼠标*/
                   putpixel(x j,y i,color[1]);
            }
        }
    }

    void MsOff(int x,int y)
    {   /* 潜匿鼠标*/
        int  i,j,color;

        for(i=0;i<16;i )
        for(j=0;j<16;j )
        {
             if(mouse_draw[i][j]==3||mouse_draw[i][j]==4)  continue;
             color=getpixel(x j,y i);
             putpixel(x j,y i,color^color);     /* 原位置异或消去*/
             putpixel(x j,y i,pixel_save[i][j]);/* 答复再来源布景*/
        }
    }

    int Msread(int *px,int *py,int *buttons)
    {  /* 读取鼠标及键盘状况*/
        int    but_old=*buttons;
        int    x_old=*px,y_old=*py;
        struct time t;
        struct date d;/* 以后时候信息*/

        do{
             if(kbhit()) return bioskey(0);
             regs.x.ax=3;
             int86(0x33,&regs,&regs);




    版权声明: 原创作品,允许转载,转载时请务必以超链接情势标明文章 原始理由 、作者信息和本声明。不然将清查执法责任。

  • 相关阅读:
    window.open打开页面及页面大小设置
    java--->Stack的使用
    java简单实现直接运算表达式
    idea--->tomcat控制台乱码
    多线程--->线程的几种基本实现
    java--->读取wsdl方法(二)
    java--->wsdl的简单使用(spring+cxf)
    ActiveMQ(学习1)
    基本类型和包装类型的区别
    弄懂JDK、JRE和JVM到底是什么
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975558.html
Copyright © 2011-2022 走看看