注册 登录
编程论坛 C图形专区

用C语言画同心圆难理解

小牛 发布于 2006-10-15 09:19, 2271 次点击

这是个用C画图的程序:
看不懂的地方有二点。请各位
高手指点。

#include <stdio.h>
#include <graphics.h>
void main()
{
int b;
int gdriver=DETECT,gmode; 1:定义了两个整型变量,gdriver,gmode,此时gmode没有赋值。
initgraph(&gdriver,&gmode,"D:\turboc2\Tc"); 2:此时将两个实参的地址传给initgraph函数。
cleardevice(); gmode没有赋值。怎么可以做为实参传给函数initgraph呢?
printf("\n\n\n This program shows the circle graph.\n");
for(b=10;b<=140;b+=10)
circle(320,240,b);
getch();
closegraph();
}

9 回复
#2
神vLinux飘飘2006-10-15 09:22
&gmode传递的不是gmode的值,而是gmode变量所在的地址,通过对这个地址进行操作从而达到返回(修改)gmode的值的目的

这是一种函数返回多个值的方法。
#3
小牛2006-10-15 09:39

那 initgraph()的功能是怎样的?

gmode在将地址传给initgraph()后,
initgraph()返回什么值给它。

#4
nuciewth2006-10-15 09:46

函数名: initgraph
功 能: 初始化图形系统
用 法: void far initgraph(int far *graphdriver, int far *graphmode,
char far *pathtodriver);
程序例:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.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;
}

#5
小牛2006-10-15 09:53

版主:我们学校刚上完谭浩强的那本C语言。

我对图形图图像方面的知识一片空白。请
版主解释通俗一些。那么长的代码看了头

#6
nuciewth2006-10-15 10:08
以下是引用小牛在2006-10-15 9:53:06的发言:

版主:我们学校刚上完谭浩强的那本C语言。

我对图形图图像方面的知识一片空白。请
版主解释通俗一些。那么长的代码看了头

我也只是学完老潭的那本书,和你一样,这方面我一片空白.不好意思.

#7
nuciewth2006-10-15 10:11
/*看这个,应该可以看的懂*/
图形模式的初始化
不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器, 在不同
模式下也有不同分辨率。因此, 在屏幕作图之前, 必须根据显示器适配器种类将
显示器设置成为某种图形模式, 在未设置图形模式之前, 微机系统默认屏幕为文
本模式(80列, 25行字符模式), 此时所有图形函数均不能工作。设置屏幕为图形
模式, 可用下列图形初始化函数:
void far initgraph(int far *gdriver, int far *gmode, char *path);
其中gdriver和gmode分别表示图形驱动器和模式, path是指图形驱动程序所
在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见表2。
图形驱动程序由Turbo C出版商提供, 文件扩展名为.BGI。根据不同的图形
适配器有不同的图形驱动程序。例如对于EGA、 VGA 图形适配器就调用驱动程序
EGAVGA.BGI。

使用图形初始化函数设置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;
}


#8
cdmalcl2006-10-15 10:23
图形去里有比较全面的教程
LZ去看看吧
#9
notiger2006-11-12 00:46
画图这部分,谭浩强那本书我也看了,不过涉及图形处理的比较少.从网上找找资料看看比较好.
#10
请教大家2006-11-27 18:01

看过谭浩强的那本还有什么适合看

1