发新话题
打印

请教高手:c的图形编程解决方案。

请教高手:c的图形编程解决方案。

在网下download模拟时钟源程序如下:

#include<graphics.h>
#include<math.h>
#include<dos.h>

#define pi 3.1415926
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;
#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)

void init()
{
    int i,l,x1,x2,y1,y2;
    setbkcolor(1);
    circle(300,240,200);
    circle(300,240,205);
    circle(300,240,5);
    for(i=0;i<60;i++)
        {
            if(i%5==0)
                l=15;
            else
                l=5;
            x1=200*cos(i*6*pi/180)+300;
            y1=200*sin(i*6*pi/180)+240;
            x2=(200-l)*cos(i*6*pi/180)+300;
            y2=(200-l)*sin(i*6*pi/180)+240;
            line(x1,y1,x2,y2);
        }
}

main()
{
    int x,y;
    int gd=VGA,gm=2;
    unsigned char h,m,s;
    struct time t[1];
    initgraph(&gd,&gm,"d:\\tc");
    init();
    setwritemode(1);
    gettime(t);
    h=t[0].ti_hour;
    m=t[0].ti_min;
    s=t[0].ti_sec;
    setcolor(7);
    d(150,h,30);
    setcolor(14);
    d(170,m,6);
    setcolor(4);
    d(190,s,6);
    while(!kbhit())
        {
            while(t[0].ti_sec==s)
                gettime(t);
            sound(400);
            delay(70);
            sound(200);
            delay(30);
            nosound();
            setcolor(4);
            d(190,s,6);
            s=t[0].ti_sec;
            d(190,s,6);
            if (t[0].ti_min!=m)
                {
                    setcolor(14);
                    d(170,m,6);
                    m=t[0].ti_min;
                    d(170,m,6);
                }
            if (t[0].ti_hour!=h)
                {
                    setcolor(7);
                    d(150,h,30);
                    h=t[0].ti_hour;
                    d(150,h,30);
                    sound(1000);
                    delay(240);
                    nosound();
                    delay(140);
                    sound(2000);
                    delay(240);
                    nosound();
                }
        }
    getch();
    closegraph();
}

编译通过,但是运行出错:BGI   Error:  Graphics not initialized(use 'initgraph')
百度知道解决方案:
为了使用方便, 应该建立一个不需要驱动程序就能独立运行的可执行 图形程序,Turbo C中规定用下述步骤(这里以EGA、VGA显示器为例):

    1. 在C:\TC子目录下输入命令:BGIOBJ EGAVGA
    此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。
    2. 在C:\TC子目录下输入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA
    此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。
    3. 在程序中initgraph()函数调用之前加上一句: registerbgidriver(EGAVGA_driver):
该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。

请问以上方案是在cmd命令行操作吗?
但是操作第一步无法执行。期待高手指点指教,不胜感激。
见贤思齐,不贤内省。不同意见,敬请指教。

TOP

补充,百度知道链接地址:http://zhidao.baidu.com/question ... nline_ik&wtp=wk
见贤思齐,不贤内省。不同意见,敬请指教。

TOP

发新话题