摘 该文介绍种建立DOS界面生成图素文件通图形编辑程序设计方法
目前作DDCPC总线工控机(IPC)部分工作DOS界面DOS具Windows样美观方便图形户接口(GUI)
生成工艺流程图等复杂图形程序设计语言直接编程需花费量精力代码易修改
设计出数文件占存少图形编辑软件控制界研究课题
里介绍种生成图素数文件通图形编辑软件设计方法
数结构数文件格式 操作基建立图素基础数结构图素中心
圆直线矩形字符串例图素类似
1定义需图素 struct circle *定义圆 * { int xyr * 圆心半径 * char linecolorlinestyle * 圆外围线颜色线型 * char fillcolorfillstyle * 填充颜色模式 * } struct line * 定义直线 * { int x1y1 int x2y2 char linecolorlinestylelinethick * 线颜色模式粗细 * } struct box * 定义矩形 * { int x1y1 int x2y2 char linecolorlinestyle char fillcolorfillstyle } struct string * 定义字符串 * { int xy char str[10] char backcolordir char strcolorstrstyle } * 定义图素 * 2图素置条链表中 typedef struct tagElementList { char ElementType * 标识元素类 * int ElementID * 元素标识符接口中控制属性 * union tagElement { struct circle circle struct box box struct string string struct line line * 说明元素 * }Element struct tagElementList *next }ElementList 利种数结构存中形成图素链表操作链表基础
3定义指针备种操作 ElementList *Listhead *Listend*Listtemp *Listhere 4定义全局变量记录图素数 static int Elementcount0 图形文件格式第字节(char)表示整图形背景颜色接字(word)应Elementcount表示图素数面存链表中图素属性值
二图形编辑功实现 软件包含图形编辑功作图修改移动删复制面仅举例说明实现方法
1作图 圆例图形类似
drawcircle() { int i char s[20]c int cxcycr int clsclccfccfs movecursor() * 移动光标确定圆心 * cxcursorx cycursory movecursor() * 确定半径 * cr(int)sqrt((cursorxcx)*(cursorxcx) (cursorycy)*(cursorycy) setcolor(WHITE) circle (cxcycr) * 画圆 * clsselectlinestyle() clcselectcolor (selectlinecolor) setcolor(clc) for(i0i
样标识矩形终止位置初始位置存偏差水垂直偏差分dlxdly
接搜索存图素链表确定图素外接矩形判断外接矩形否初始标识矩形该图素坐标属性值改变dlxdly
清图形区根新图素链表作图
图形删功类似需符合条件图素链表中清修改Elementcount值
拷贝图形需符合条件图素备份结点修改结点坐标属性值该结点加入链表相应增加Elementcount值
移动图形代码
fnMove () { Rect rect * 定义矩形 * int i selectblock () * 选择移动块 * moveblock () * 移动块 * ListtempListhead for (i0inext } clearscreeen () * 清作图区 * drawlink () * 图素链表画图 * } 中change ( )实现
change(ElementList *Ctemp int dlxint dly) { switch (Ctemp>ElementType) { case c Ctemp>Elementcirclex dlx Ctemp>Elementcircley dly break case b Ctemp>Elementboxx1 dlx Ctemp>Elementboxx2 dlx Ctemp>Elementboxy1 dly Ctemp>Elementboxy2 dly break case l Ctemp>Elementlinex1 dlx Ctemp>Elementliney1 dly Ctemp>Elementlinex2 dlx Ctemp>Elementliney2 dly break case s Ctemp>Elementstringx dlx Ctemp>Elementstringy dly break } }
三文件功实现 存盘时开文件写入图形背景颜色写入图素数Elementcount存链表中图素属性值次写入文件
读盘时存中动态建立图素链表文件中图素属性值次放入链表中根背景颜色图素属性值屏幕显示图形
存盘程实现
savefile(char * filename) { FILE *fp int i ListtempListhead Eid0 if((fpfopen(filenamew b))NULL) { printf (s Cantt open the file ) exit(1) } fwrite(&backcolor sizeof(char)1fp) fwrite(&Elementcountsizeof(int)1fp) for(i0iElementIDEid fwrite(Listtempsizeof(ElementList)1fp) ListtempListtemp>next Eid } fclose(fp) } 四应程序编程接口 应程序编程接口功读图形文件显示画面图素进行动态刷新
接口均函数形式出现供控制应程序调
1drawchart (char * filename)功读图形文件存中建立图素链表显示图形
2changechart(int ElementID int how)功改变图素ElementID特性样改变how决定
该接口方便实现图形动态刷新
3clearchart( )功释放图素链表占存
4draw ( char * filename)功建立链表边读图形文件边显示
该函数占存适图素数文件较需动态刷新图形画面显示
作者:汪建 陆志
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档