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

📄 graph.c

📁 用于计算一个很长的式子
💻 C
字号:
char li16[]={
/* 以下是 '李' 的 16点阵宋体 字模,32 byte */
  0x01,0x00,0x01,0x00,0x7F,0xFC,0x03,0x80,
  0x05,0x40,0x09,0x30,0x31,0x0E,0xDF,0xE4,
  0x00,0x80,0x01,0x00,0x7F,0xFE,0x01,0x00,
  0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,
};
void InitGraph()
{
    int gdriver, gmode;
    registerbgidriver(EGAVGA_driver);
    detectgraph(&gdriver,&gmode);
    initgraph(&gdriver,&gmode,"");
    cleardevice();
}

void InitButton(ButtonClass *button,FormClass form)
{
    button->left=(form.left+form.right)/2-30;
    button->top=form.bottom-24;
    button->right=button->left+60;
    button->bottom=button->top+18;
    button->charx=2;
    button->chary=5;
    button->fontcolor=RED;
    button->forecolor=WHITE;
    button->fontsize=6;
    button->caption="Button";
}
void InitTitleBar(TitleBarClass *bar,FormClass form)
{
    bar->left=form.left+2;
    bar->top=form.top+2;
    bar->right=form.right-2;
    bar->bottom=bar->top+14;
    bar->caption="TitleBar";

}
void InitForm(FormClass *form)
{
    form->left=150;
    form->top=150;
    form->right=450;
    form->bottom=280;
    form->bkcolor=WHITE;
}

void MsgBox(char *messege)
{
    int size; /*图形大小*/
    void *image;/*储存图形的数据*/
    FormClass form;
    ButtonClass button;

    InitForm(&form);

    /*储存消息框覆盖的图形*/
    size=imagesize(form.left-1,form.top-1,form.right+2,form.bottom+2);
    image=(void *)malloc(size);
    getimage(form.left-1,form.top-1,form.right+2,form.bottom+2,image);/*储存消息框所覆盖的图形*/

    /*显示窗体*/
    DisplayForm(form);

    /*显示关闭按钮*/
    InitButton(&button,form);
    button.caption=" Close";
    DisplayButton(button);
    /*显示消息提示语*/
    setcolor(RED);/*设置消息字体颜色*/
    /*outtextxy(form.left+4,form.top+30,messege);*/
    DrawMat(li16,16,form.left+4,form.top+30,RED);
    getch();
    putimage(form.left-1,form.top-1,image,COPY_PUT);/*恢复消息框所覆盖的图形*/

}
void DisplayForm(FormClass form)
{
    TitleBarClass titlebar;
    InitTitleBar(&titlebar,form); /*初始化标题栏 */
    /*画框*/
    setcolor(DARKGRAY);/*深灰*/
    rectangle(form.left,form.top,form.right,form.bottom);
    setcolor(LIGHTGRAY);/*浅灰*/
    rectangle(form.left+1,form.top+1,form.right-1,form.bottom-1);
    FillColor(form.left+1,form.top+1,form.right-1,form.bottom-1,form.bkcolor);
    DisplayTitleBar(titlebar);

}

void FillColor(int left,int top,int right,int bottom,int color)
{
    /*自定义的填充函数,填充矩形*/
    int i,j;
    setcolor(color);
    left++;
    for(i=top+1;i<bottom;i++)
        line(left,i,right,i);

}
void DisplayButton(ButtonClass btn)
{
    /*按钮*/
    setcolor(DARKGRAY);/*深灰*/
    rectangle(btn.left,btn.top,btn.right,btn.bottom);/*按钮外框,阴影*/
    setcolor(LIGHTGRAY);/*浅灰*/
    rectangle(btn.left+1,btn.top+1,btn.right-1,btn.bottom-1);/*按钮内框*/
    FillColor(btn.left+1,btn.top+1,btn.right-1,btn.bottom-1,btn.forecolor);
    setcolor(btn.fontcolor);
    settextstyle(0,0,USER_CHAR_SIZE);/*设置字体大小*/
    setusercharsize(btn.fontsize,1,btn.fontsize,1);/*设置字体*/
    outtextxy(btn.left+btn.charx,btn.top+btn.chary,btn.caption);
}
void DisplayTitleBar(TitleBarClass titlebar)
{
    /*画出标题栏*/
    ButtonClass button;
    button.right=titlebar.right-2;
    button.left=button.right-10;
    button.top=titlebar.top+2;
    button.bottom=titlebar.bottom-2;
    button.caption="X";
    button.fontcolor=RED;
    button.forecolor=CYAN;
    button.fontsize=1;
    button.charx=2;
    button.chary=2;
    setcolor(BLUE);
    rectangle(titlebar.left,titlebar.top,titlebar.right,titlebar.bottom);/*标题栏*/
    FillColor(titlebar.left,titlebar.top,titlebar.right,titlebar.bottom,CYAN);
    settextstyle(0,0,USER_CHAR_SIZE);/*设置标题字体大小*/
    setusercharsize(1,1,1,1);/*设置标题栏字体8*8点阵字体*/
    setcolor(WHITE);/*设置标题栏字体颜色*/
    outtextxy(titlebar.left+4,titlebar.top+4,titlebar.caption);
    DisplayButton(button);
    button.right=titlebar.right-14;
    button.left=button.right-10;
    button.caption="O";
    DisplayButton(button);
    button.charx=1;
    button.right=titlebar.right-26;
    button.left=button.right-10;
    button.caption="-";
    DisplayButton(button);

}
void DrawMat(char *mat,int matsize,int x,int y,int color)
{
    /*功能:在图形模式下输出一个汉字*/
    int i,j,k,n;
    n=(matsize-1)/8+1;
    for(j=0;j<matsize;j++)
        for(i=0;i<n;i++)
            for(k=0;k<8;k++)
                if(mat[j*n+i]&(0x80>>k))  /*测试为1的位则显示*/
                    putpixel(x+i*8+k,y+j,color);
}

⌨️ 快捷键说明

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