+=dl-x; Ctemp->Element.circle.y+=dl-y; break; case 'b': Ctemp->Element.box.x1+=dl-x; Ctemp->Element.box.x2+=dl-x; Ctemp->Element.box.y1+=dl-y; Ctemp->Element.box.y2+=dl-y; break; case 'l': Ctemp->Element.line.x1+=dl-x; Ctemp->Element.line.y1+=dl-y; Ctemp->Element.line.x2+=dl-x; Ctemp->Element.line.y2+=dl-y; break; case 's': Ctemp->Element.string.x+=dl-x; Ctemp->Element.string.y+=dl-y; break; . . . } } 三、文件功能的实现 存盘时,打开文件,写入图形的背景颜色,写入图素个数Elementcount,再将内存链表中各图素的属性值依次写入文件即可。 读盘时,在内存中动态建立图素链表,将文件中的图素属性值依次放入链表中,再根据背景颜色、图素属性值在屏幕上显示图形。 存盘过程实现如下。 savefile(char * filename) { FILE *fp; int i; List-temp=List-head; Eid=0; if((fp=fopen(filename,"w+b"))==NULL) { printf ("%s", "Cant't open the file "); exit(1); } fwrite(&back-color, sizeof(char),1,fp); fwrite(&Elementcount,sizeof(int),1,fp); for(i=0;i<Elementcount;i++) { List-temp->ElementID=Eid; fwrite(List-temp,sizeof(ElementList),1,fp); List-temp=List-temp->next; Eid++; } fclose(fp); } 四、应用程序编程接口 应用程序编程接口主要功能是读图形文件并显示,对画面图素进行动态刷新。这些接口均以函数形式出现,供控制应用程序调用。 1.draw-chart (char * filename)功能:读图形文件,在内存中建立图素链表,显示图形。 2.change-chart(int Element-ID, int how)功能:改变图素Element-ID的特性,怎样改变由how决定。该接口能方便地实现图形的动态刷新。 3.clear-chart( )功能:释放图素链表占用的内存。 4.draw ( char * filename)功能:不建立链表,边读图形文件,边显示。该函数不占用内存,适用于图素多、数据文件较大,而又不需动态刷新的图形画面显示。
作者:汪建平 陆志才 |