标题:为什么以下编码可以运行却出现如下提示??
只看楼主
lingdo2001
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2012-4-16
结帖率:50%
已结贴  问题点数:20 回复次数:2 
为什么以下编码可以运行却出现如下提示??
以下代码RUN正常,
但是user screen出现如下提示:
BGI error,graphics not initilized.
该怎样才能达到程序本来的目的:旋转太极的效果呢?

#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void mysector(int x,int y,int start,int end,int xr,int yr);
void Cmvolve(char *buffer);
void main()
{
    int gdrive=VGA,gmode=VGAHI;
    int size=0;
    void *buffer=NULL;
    initgraph(&gdrive,&gmode,"");
    cleardevice();
    setbkcolor(7);
    size=imagesize(160,80,320,320);
    buffer=malloc(size);
    getimage(160,80,321,321,buffer);
    Cmvolve(buffer);
    getch();
    closegraph();
}
void mysector(int x,int y,int start,int end,int xr,int yr)
{
    if(start<360&&end>360)
    {
        sector(x,y,start,360,xr,yr);
        sector(x,y,0,end-360,xr,yr);
    }
    else if(start==360)
        sector(x,y,0,end-360,xr,yr);
    else if(start>360&&end >360)
        sector(x,y,start-360,end-360,xr,yr);
    else
        sector(x,y,start,end,xr,yr);
}
void Cmvolve(char *buffer)
{
    int xt=0,yt=0,x0=320,y0=240,d=0;
    while(!kbhit())
    {
        putimage(160,80,buffer,COPY_PUT);
        setcolor(15);
        circle(x0,y0,160);
        d=(d+10)%360;
        xt=(int)80*sin((d+90)*(2*3.14)/360);
        yt=(int)80*cos((d+90)*(2*3.14)/360);
        setfillstyle(1,15);
        mysector(x0,y0,0+d,180+d,160,160);
        setcolor(1);
        setfillstyle(1,1);
        mysector(x0,y0,0+d,180+d,160,160);
        setcolor(1);
        setfillstyle(1,1);
        mysector(x0+xt,y0+yt,0+d,180+d,80,80);
        setcolor(15);
        setfillstyle(1,15);
        mysector(x0-xt,y0-yt,180+d,360+d,80,80);
        setcolor(15);
        setfillstyle(1,15);
        mysector(x0+xt,y0+yt,0,360,30,30);
        setcolor(1);
        setfillstyle(1,1);
        mysector(x0-xt,y0-yt,0,360,30,30);
        getimage(160,80,320,320,buffer);
    }
}
搜索更多相关主题的帖子: void 320 include screen 
2012-04-16 13:43
dc__sky
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:117
注 册:2012-3-13
得分:20 
在TC使用图形编程时,需要用BGI图形开发包,正因为我们在编译连接的时候没有将这个图形驱动包含进去,所以无法执行.
   把图形驱动包含进去,有两种方法:
   1 我们在使用initgraph()时,发现他有三个参数,第三个参数正是对图形驱动的调用路径. 即你要指明EGAVGA . BGI(或者其他图形驱动如,SVGA.BGI)所在的位置。如果你使用的是win-tc的话,会发现它提供了第三方的图形驱动包。
    2 或者我们在initgraph()调用之前我们调用 registerbgidriver(EGAVGA_driver);这样就自动加载了驱动程序。有一点要注意:在使用这个功能之前,必须确保EGAVGA.BGI已经加载在graphics.lib之中。(如果前面的问题已经解决就说明已经加载了)如果没有加载,如要按照以下的方法进行加载。
    在TC下找到BGIOBJ.exe这个程序,并找到EGAVGA.BGI这个文件,把EGAVGA.BGI这个文件复制到与BGIOBJ.exe同一目录下,
   执行:BGIOBJ EGAVGA(把bgi转换成obj)
   再执行:TLIB LIB\GRAPHICS.LIB+EGAVGA(加载到lib中)   即可。
2012-04-16 14:25
lingdo2001
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2012-4-16
得分:0 
   
   执行:BGIOBJ EGAVGA(把bgi转换成obj)
   再执行:TLIB LIB\GRAPHICS.LIB+EGAVGA(加载到lib中)  
是如何执行?能否具体一点,谢谢。
2012-04-16 17:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-365924-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016995 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved