CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

turbo c显示256色bmp的问题

楼主fnsea()2003-08-04 10:58:47 在 C/C++ / C语言 提问

turbo   c能不能显示高分辨率如640*480的256色bmp图象呢?如果可以,怎么用turbo   c写呢?  
  看到的一些资料都是只能显示16色的。  
  问题点数:0、回复次数:5Top

1 楼fwinfwin(彩虹沙漠随风飘飘)回复于 2003-08-04 12:52:04 得分 0

我见过可以的,网上有例子程序,我还下载过,不过丢失了,你自己找  
  win98安全模式是640×480   256色的,所以说,现在的显卡都是可以作为svaga   640×480×256来使用的!Top

2 楼cnxiaohai(相声独一处(回归,为了编程,为了C,为了CSDN))回复于 2003-08-04 13:12:33 得分 0

翻翻从前的帖子  
   
  好像有Top

3 楼chinazcw(笑口常开)回复于 2003-08-04 14:45:27 得分 0

我觉得显示16色的跟显示256色的区别应该在于   调色板的设置那里。对此并无很大兴趣,楼主自己想想吧!~Top

4 楼snowman_pc(cpp)回复于 2003-08-04 15:55:59 得分 0

图形函数    
          Turbo   C提供了非常丰富的图形函数,   所有图形函数的原型均在graphics.   h    
  中,   本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图    
  形窗口以及图形模式下的文本输出等函数。另外,   使用图形函数时要确保有显示    
  器图形驱动程序*BGI,   同时将集成开发环境Options/Linker中的Graphics   lib选    
  为on,   只有这样才能保证正确使用图形函数。    
          1.   图形模式的初始化    
          不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器,   在不同    
  模式下也有不同分辨率。因此,   在屏幕作图之前,   必须根据显示器适配器种类将    
  显示器设置成为某种图形模式,   在未设置图形模式之前,   微机系统默认屏幕为文    
  本模式(80列,   25行字符模式),   此时所有图形函数均不能工作。设置屏幕为图形    
  模式,   可用下列图形初始化函数:    
            void   far   initgraph(int   far   *gdriver,   int   far   *gmode,   char   *path);    
          其中gdriver和gmode分别表示图形驱动器和模式,   path是指图形驱动程序所    
  在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见表2。    
          图形驱动程序由Turbo   C出版商提供,   文件扩展名为.BGI。根据不同的图形    
  适配器有不同的图形驱动程序。例如对于EGA、   VGA   图形适配器就调用驱动程序    
  EGAVGA.BGI。    
   
                                表2.   图形驱动器、模式的符号常数及数值    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    
            图形驱动器(gdriver)                     图形模式(gmode)    
        ───────────           ───────────         色调     分辨率    
          符号常数         数值                       符号常数           数值    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    
          CGA                     1                         CGAC0                       0                     C0       320*200    
                                                              CGAC1                       1                     C1       320*200    
                                                              CGAC2                       2                     C2       320*200    
                                                              CGAC3                       3                     C3       320*200    
                                                              CGAHI                       4                     2色     640*200    
  ───────────────────────────────────    
          MCGA                   2                         MCGAC0                     0                     C0       320*200    
                                                              MCGAC1                     1                     C1       320*200    
                                                              MCGAC2                     2                     C2       320*200    
                                                              MCGAC3                     3                     C3       320*200    
                                                              MCGAMED                   4                     2色     640*200    
                                                              MCGAHI                     5                     2色     640*480    
  ───────────────────────────────────    
          EGA                     3                         EGALO                       0                   16色     640*200    
                                                              EGAHI                       1                   16色     640*350    
  ───────────────────────────────────    
          EGA64                 4                         EGA64LO                   0                   16色     640*200    
                                                              EGA64HI                   1                     4色     640*350    
  ───────────────────────────────────    
          EGAMON               5                         EGAMONHI                 0                     2色     640*350    
  ───────────────────────────────────    
          IBM8514             6                         IBM8514LO               0                 256色     640*480    
                                                              IBM8514HI               1                 256色   1024*768    
  ───────────────────────────────────    
          HERC                   7                         HERCMONOHI             0                     2色     720*348    
  ───────────────────────────────────    
          ATT400               8                         ATT400C0                 0                     C0       320*200    
                                                              ATT400C1                 1                     C1       320*200    
                                                              ATT400C2                 2                     C2       320*200    
                                                              ATT400C3                 3                     C3       320*200    
                                                              ATT400MED               4                     2色     320*200    
                                                              ATT400HI                 5                     2色     320*200    
  ───────────────────────────────────    
          VGA                     9                         VGALO                       0                   16色     640*200    
                                                              VGAMED                     1                   16色     640*350    
                                                              VGAHI                       2                   16色     640*480    
  ───────────────────────────────────    
          PC3270               10                       PC3270HI                 0                     2色     720*350    
  ───────────────────────────────────    
          DETECT               0                         用于硬件测试    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    
   
          例4.   使用图形初始化函数设置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的意义与上面相同。    
       
          例5.   自动进行硬件测试后进行图形初始化    
            #include   <graphics.h>    
            int   main()    
            {    
                      int   gdriver,   gmode;    
                      detectgraph(&gdriver,   &gmode);           /*自动测试硬件*/    
                      printf("the   graphics   driver   is   %d,   mode   is   %d\n",   gdriver,    
                                    gmode);               /*输出测试结果*/    
                      getch();    
                      initgraph(&gdriver,   &gmode,   "c:\\tc");    
                                                                /*   根据测试结果初始化图形*/    
                      bar3d(10,   10,   130,   250,   20,   1);    
                      getch();    
                      closegraph();    
                      return   0;    
              }    
   
          上例程序中先对图形显示器自动检测,   然后再用图形初始化函数进行初始化    
  设置,   但Turbo   C提供了一种更简单的方法,     即用gdriver=   DETECT   语句后再跟    
  initgraph()函数就行了。采用这种方法后,   上例可改为:    
       
  Top

5 楼snowman_pc(cpp)回复于 2003-08-04 15:56:28 得分 0

例6.    
            #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   默认方式),   并释放    
  用于保存图形驱动程序和字体的系统内存。    
   
          2.   独立图形运行程序的建立    
          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   LIB\GRAPHICS.LIB+EGAVGA    
          此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。    
          3.   在程序中initgraph()函数调用之前加上一句:    
                registerbgidriver(EGAVGA_driver):    
  该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。    
          经过上面处理,编译链接后的执行程序可在任何目录或其它兼容机上运行。    
  假设已作了前两个步骤,若再向例6中加   registerbgidriver()函数则变成:    
          例7:    
            #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;    
            }    
          上例编译链接后产生的执行程序可独立运行。    
          如不初始化成EGA或CGA分辨率,   而想初始化为CGA分辨率,     则只需要将上述    
  步骤中有EGAVGA的地方用CGA代替即可。    
   
          3.屏幕颜色的设置和清屏函数    
          对于图形模式的屏幕颜色设置,   同样分为背景色的设置和前景色的设置。在    
  Turbo   C中分别用下面两个函数。    
          设置背景色:                 void   far   setbkcolor(   int   color);    
          设置作图色:                 void   far   setcolor(int   color);    
          其中color   为图形方式下颜色的规定数值,   对EGA,   VGA显示器适配器,   有关    
  颜色的符号常数及数值见下表所示。    
                                  表3   有关屏幕颜色的符号常数表    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    
      符号常数             数值           含义                       符号常数             数值           含义    
  ───────────────────────────────────    
      BLACK                     0               黑色                       DARKGRAY               8               深灰    
      BLUE                       1               兰色                       LIGHTBLUE             9               深兰    
      GREEN                     2               绿色                       LIGHTGREEN           10             淡绿    
      CYAN                       3               青色                       LIGHTCYAN             11             淡青    
      RED                         4               红色                       LIGHTRED               12             淡红    
      MAGENTA                 5               洋红                       LIGHTMAGENTA       13             淡洋红    
      BROWN                     6               棕色                       YELLOW                   14             黄色    
      LIGHTGRAY             7               淡灰                       WHITE                     15             白色    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    
          对于CGA适配器,   背景色可以为表3中16种颜色的一种,   但前景色依赖于不同    
  的调色板。共有四种调色板,   每种调色板上有四种颜色可供选择。不同调色板所    
  对应的原色见表4。    
                                表4   CGA调色板与颜色值表    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    
                调色板                                                               颜色值    
  ───────────               ──────────────────    
      符号常数         数值                             0                   1                   2                   3    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    
              C0               0                               背景               绿                 红                 黄    
              C1               1                               背景               青               洋红               白    
              C2               2                               背景             淡绿             淡红               黄    
              C3               3                               背景             淡青           淡洋红             白    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    
   
          清除图形屏幕内容使用清屏函数,   其调用格式如下:    
            voide   far   cleardevice(void);    
          有关颜色设置、清屏函数的使用请看例8。    
          例8:    
            #include<stdio.h>    
            #include<graphics.h>    
            int   main()    
            {    
                      int   gdriver,   gmode,   i;    
                      gdriver=DETECT;    
                      registerbgidriver(EGAVGA_DRIVER);/*建立独立图形运行程序*/    
                      initgraph(&gdriver,   &gmode",   "");/*图形初始化*/    
                      setbkcolor(0);                                       /*设置图形背景*/    
                      cleardevice();    
                      for(i=0;   i<=15;   i++)    
                      {    
                          setcolor(i);                                       /*设置不同作图色*/    
                          circle(320,   240,   20+i*10);           /*画半径不同的圆*/    
                          delay(100);                                         /*延迟100毫秒*/    
                      }    
                      for(i=0;   i<=15;   i++)    
                      {    
                            setbkcolor(i);                                 /*设置不同背景色*/    
                            cleardevice();    
                            circle(320,   240,   20+i*10);    
                            delay(100);    
                      }    
                      closegraph();    
                      return   0;    
            }    
   
          另外,   TURBO   C也提供了几个获得现行颜色设置情况的函数。    
          int   far   getbkcolor(void);             返回现行背景颜色值。    
          int   far   getcolor(void);                 返回现行作图颜色值。    
          int   far   getmaxcolor(void);           返回最高可用的颜色值。    
   
          4.   基本图形函数    
          基本图形函数包括画点,   线以及其它一些基本图形的函数。本节对这些函数    
  作一全面的介绍。    
   
          一、画点    
          1.   画点函数    
            void   far   putpixel(int   x,   int   y,   int   color);    
          该函数表示有指定的象元画一个按color所确定颜色的点。对于颜色color的    
  值可从表3中获得而对x,   y是指图形象元的坐标。    
          在图形模式下,   是按象元来定义坐标的。对VGA适配器,     它的最高分辨率为    
  640x480,   其中640为整个屏幕从左到右所有象元的个数,   480   为整个屏幕从上到    
  下所有象元的个数。屏幕的左上角坐标为(0,   0),   右下角坐标为(639,   479),   水    
  平方向从左到右为x轴正向,   垂直方向从上到下为y轴正向。TURBO   C   的图形函数    
  都是相对于图形屏幕坐标,   即象元来说的。    
          关于点的另外一个函数是:    
            int   far   getpixel(int   x,   int   y);    
          它获得当前点(x,   y)的颜色值。    
   
          2.   有关坐标位置的函数    
   
            int   far   getmaxx(void);    
          返回x轴的最大值。    
   
            int   far   getmaxy(void);    
          返回y轴的最大值。    
   
            int   far   getx(void);    
          返回游标在x轴的位置。    
   
            void   far   gety(void);    
          返回游标有y轴的位置。    
   
            void   far   moveto(int   x,   int   y);    
          移动游标到(x,   y)点,   不是画点,   在移动过程中亦画点。    
   
            void   far   moverel(int   dx,   int   dy);    
          移动游标从现行位置(x,   y)移动到(x+dx,   y+dy)的位置,   移动过程中不画点。    
       
           
          以上载自C语言编程宝典,  
   
  需要的话,  
  snowman_pc@sohu.com  
   
  留下你的mail  
   
  Top

相关问题

  • turbo c如何支持256色?
  • 求教(TURBO C)
  • I Love Turbo C!
  • 寻找TURBO C
  • turbo c 问题
  • 求turbo c++3.0
  • 求Turbo C
  • 关于Turbo C++
  • 用turbo c 如何设置象windows那样多彩的颜色
  • 用turbo c 如何设置象windows那样多彩的颜色

关键词

  • 图形
  • 函数
  • 模式
  • 驱动
  • 数值
  • 显示器
  • gdriver
  • 程序
  • gmode
  • 初始化

得分解答快速导航

  • 帖主:fnsea

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo