C语言中在VS2017中构建图形界面基础知识点

一.initgraph函数(讲解)转自:https://blog.csdn.net/zhao_fu_lu/article/details/23961111

1.initgraph():初始化图形系统

                  (1)  函数原型:void far initgraph(int far *graphdriver,int far *graphmode,char far *pathtodriver);

                                  graphdriver:上涨指向图形驱动序号变量的指针

                                  graphmode:在graphdriver确定后,指向图形显示模式序号变量的指针

                                  pathtodriver:表示存放图形驱动文件的路径

                  (2)   头文件:graphics.h

                            不同的显示器适配器有不同的图形分辨率(即使是同一个显示器适配器,在不同模式下也有不同的分辨率)

                            在未作图之前,必须根据显示器适配器种类将显示器设置成为某种图形格式。

                           在未设置图形格式之前,微机系统默认屏幕为文本格式(80列,25行字符模式),此时所有的图形函数都不能工作。

                           设置屏幕为图形模式,可以用下列图形化初始函数:void far initgraph(int far *gdriver,int far *gmode,char *path);

                          gdriver和gmode表示图形驱动.显示模式,path是指图形驱动程序所在的目录路径。

                          图形驱动程序由Turbo C出版商提供,文件扩展名为.BGI。根据不同的图形适配器有不同的图形驱动程序。

                  (3)初始化绘图环境

                      HWWD initgraph(

                                                  int width;//绘制环境的宽度

                                                  int height;//绘制环境的高度

                                                  int flag=NULL//绘制环境的样式,默认为NULL,可以为以下值

                                                 );

   值     NOCLOSE                                 NOMINIMIZE                               SHOWCONSOLE      

  含义  禁用绘图环境的关闭按钮      禁用绘图环境的最小化按钮                     保留原控制台窗口









2.Turbo C提供了一个自动检测显示器硬件的函数,其调用格式为:

              void far detectgraph(int *gdriver,*gmode);其中图形驱动和显示模式与上面相同

              #include <graphics.h>//使用图形初始化函数设置VGA高分辨率图形模式
            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;

                  } 

注释:bar3d三维条形图  用法:void far bar3d{int left,int top,//三维空间矩形长条图正面的左上角坐标

                                                                          int right,int bottom,//三维空间矩形长条图正面的右下角图标

                                                                          int depth,//三维空间矩形长条图的深度(即阴影)

                                                                          int topflag//设置是否绘制三维空间长条图的顶部

                                                                         };


      //自动进行硬件测试后进行图形初始化

      #include <graphics.h>

  int main()
  {

  int gdriver, gmode;                                                                        /int gdriver=DETECT,gmode;

  detectgraph(&gdriver, &gmode);           /*自动测试硬件*/
  printf("the graphics driver is %d, mode is %d\n", gdriver,
  gmode);                                                 /*输出测试结果*/
  getch();
  initgraph(&gdriver, &gmode, "c:\\tc");                                         initgraph(&gdriver,&gmode,"c:\\tc");
                                                              /* 根据测试结果初始化图形*/
  bar3d(10, 10, 130, 250, 20, 1);
  getch();
  closegraph();
  return 0;

  } 

上述程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但Turbo C提供了一种更简单的方法,即用gdriver=DETECT语句后再跟initgraph()函数就行了。采用了这种方法后,上例可改为:上述注解

另外,Turbo C提供了退出图形状态的函数closegraph(),其调用格式为void far closegraph();调用该函数后可退出图形杂状态而进入文本格式(Turbo C默认方式),并释放用于保存驱动程序和字体的系统内存。

       #include "graphics.h"
  #include "stdio.h"
  int main(void) 
  { 
                                                                   /* request auto detection */ 
  int gdriver = DETECT, gmode, errorcode; 
                                                                 /* initialize graphics mode */ 
  initgraph(&gdriver, &gmode, ""); 
                                                                 /* read result of initialization */ 
  errorcode = graphresult(); 
  if (errorcode != grOk) /* an error occurred */ 
  { 
  printf("Graphics error: %s\n", grapherrormsg(errorcode)); 
  printf("Press any key to halt:"); 
  getch(); 
  exit(1);                                                 /* return with error code */ 
  } 
                                                             /* draw a line */ 
  line(0, 0, getmaxx(), getmaxy()); 
                                                               /* clean up */ 
  getch(); 
  closegraph(); 
  return 0; 

  }

二.在绘制图形色彩时候遇到的随机函数:rand函数(线性同余法)(产生随机数)和srand(初始化随机种子)

   转自:https://blog.csdn.net/github_37287822/article/details/77392130

头文件:<stdlib.h>

(1)定义函数:int rand(void)

函数功能:产生随机数

函数说明:因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以,在一定的范围里可看成是随机的。

                 rand()会返回一随机数值,范围在0至RAND_MAX 间。

               在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。 

返回值: 返回0至RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。且0-RAND_MAX每个数字被选中的机率是相同的。

rand()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。

(2)srand函数

头文件:<stdlib.h>

定义函数:void srand(unsigned int seed);

函数说明:srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用getpid()或者time(0)的返回值来当作seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

三.

(1)

DLL 文件: winmm 或者 winmm.dll

  DLL 名称: Windows Multimedia API

  描述:

  winmm.dll是Windows多媒体相关应用程序接口,用于低档的音频和游戏手柄。

       #pragma comment( comment-type ,["commentstring"] )

       comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一

       commentstring是一个提供为comment-type提供附加信息的字符串。

       playsound的具体用法转自:https://blog.csdn.net/ccx_john/article/details/12494129

(2)

 RGB(red,green,blue)

 RGB函数就是(1*R+256*G+65536*B)

 文字:settextcolor(YELLOW);(颜色)
            settextstyle(,,L”字体“);//高,宽

            outtextsy(x,y,L”“); / /out(输出).text(文字).指定坐标输出文字

四.#include<time.h> 库函数详解

转自: http://blog.csdn.net/chenyiming_1990/article/details/8682552

两个类型:

time_t:表示距离 UTC 时间 1970-01-01 00:00:00 的秒数。也叫做日历时,类型是  long
clock_t: 只用于程序计时,貌似其他的没它什么事。

struct tm:通常用于存储本地时。

五.



             


猜你喜欢

转载自blog.csdn.net/weixin_40752764/article/details/80555809