网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.c++学习计划.
.C程序设计语言概论(1).
.《用做好的Excel報表模板來做報表.
.用Indy组件开发Socket应用程序.
.五子棋(结束界面改观了一下).
.掷骰子.
.实现真正意义上的二维动态数组模.
.Net是未来的趋势吗?.
.5.  运算符.
.Java进阶:JNI使用技巧点滴.
.编程实现自动弹出和关闭CD托盘.
.高质量C++/C编程指南(七).
.C++箴言:谨慎考虑资源管理类的拷.
.C语言初学者入门讲座 第十三讲 联.
.学数学也要学点偷懒的技术.
.C程序开发经典实例之8.
.采用c/c++编程实现盗取2005 Beta.
.用C++访问SQL Server 2000的实例.
.C程序开发经典实例之5.
.费尔马二平方素数.

关于C语言中图形模式的问题

发表日期:2008-3-8


              关于C语言中图形模式的问题
相信大家碰到这种事,自己编好的图形程序,发给好友的机器上居然运行不了!这是为什么呢?我通过找了大量资料找到了原因:
  . 我们在知道显示器的情况下,可以使用图形初始化函数设置高分辨率图形模式(这里假设是VGA):
     #include <graphics.h>
     int main()
     {
          int gdriver, gmode;
          gdriver=VGA;
          gmode=VGAHI;
          initgraph(&gdriver, &gmode, "c:\tc");
          bar3d(100, 100, 300, 250, 50, 1);       /*画一长方体*/
          getch();
          closegraph();
          return 0;
     }   .有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写的程序用于不同图形驱动器,Turbo C提供了一个自动检测显示器硬件的函数,其调用格式为:
     void far detectgraph(int *gdriver, *gmode);
    其中gdriver和gmode的意义与上面相同。
 
  .自动进行硬件测试后进行图形初始化
     #include <graphics.h>
     int main()
     {
          int gdriver, gmode;
          detectgraph(&gdriver, &gmode);     /*自动测试硬件*/
          printf("the graphics driver is %d, mode is %d ", gdriver,
                 gmode);       /*输出测试结果*/
          getch();
          initgraph(&gdriver, &gmode, "c:\tc");
                               /* 根据测试结果初始化图形*/
          bar3d(10, 10, 130, 250, 20, 1);
          getch();
          closegraph();
          return 0;
      }   . 上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但Turbo C提供了一种更简单的方法, 即用gdriver= DETECT 语句后再跟initgraph()函数就行了。采用这种方法后, 上例可改为:
 
     #include <graphics.h>
     int main()
     {
          int gdriver=DETECT, gmode;
          initgraph(&gdriver, &gmode, "c:\tc");
          bar3d(50, 50, 150, 30, 1);
          getch();
          closegraph();
          return 0;
     }
  . 另外, Turbo C提供了退出图外形态的函数closegraph(), 其调用格式为:
     void far closegraph(void);
    调用该函数后可退出图外形态而进入文本方式(Turbo C 默认方式), 并释放用于保存图形驱动程序和字体的系统内存。
 .我们可不可以独立图形运行程序的建立?请看下面:
    Turbo C对于用initgraph()函数直接进行的图形初始化程序, 在编译和链接时并没有将相应的驱动程序(*.BGI)装入到执行程序, 当程序进行到intitgraph()语句时, 再从该函数中第三个形式参数char *path中所规定的路径中去找相应的驱动程序。若没有驱动程序, 则在C:TC中去找, 如C:TC中仍没有或TC不存在,将会出现错误:
     BGI Error: Graphics not initialized (use 'initgraph')
  因此, 为了使用方便, 应该建立一个不需要驱动程序就能独立运行的可执行图形程序,Turbo C中规定用下述步骤(这里以EGA、VGA显示器为例):
    1. 在C:TC子目录下输入命令:BGIOBJ EGAVGA
    此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。
    2. 在C:TC子目录下输入命令:TLIB LIBGRAPHICS.LIB+EGAVGA
    此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。
    3. 在程序中initgraph()函数调用之前加上一句:
       registerbgidriver(EGAVGA_driver):
该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。经过上面处理,编译链接后的执行程序可在任何目录或其它兼容机上运行。假设已作了前两个步骤,若再向例6中加 registerbgidriver()函数则变成:
    例:
     #include<stdio.h>
     #include<graphics.h>
     int main()
     {
         int gdriver=DETECT,gmode;
         registerbgidriver(EGAVGA_driver):  / *建立独立图形运行程序 */
         initgraph( gdriver, gmode,"c:\tc");
         bar3d(50,50,250,150,20,1);
         getch();
         closegraph();
         return 0;
     }
    上例编译链接后产生的执行程序可独立运行。
   我用的是Trubo C v2.0,已经完全通过,编出来的图形程序,在任何一台机器上都可以运行!我的QQ:156301529,Email:rodgersnow@163.com假如大家能跟我共同探讨C语言程序设计,有什么意见或建议欢迎跟我联系,我会很兴奋的,必竟自己是个小菜鸟!呵呵.........谢谢您费眼观看.........

上一篇:在未来时态下开发C++程序 人气:502
下一篇:关于全排列算法,大家请指导! 人气:1846
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐