




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、摘 要 該文先容了一種建立在dos界面下天生圖素文件的通用圖形編輯程序的設(shè)計方法。一、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)文件格式由于所有的操縱都基本建立在圖素的基礎(chǔ)之上,故數(shù)據(jù)結(jié)構(gòu)也以圖素為中心。以下以圓、直線、矩形、字符串為例,其它圖素類似。1.定義所需圖素struct circle /*定義圓 */int x,y,r; /* 圓心,半徑 */char linecolor,linestyle; /* 圓外圍線的顏色,線型 */char fillcolor,fillstyle; /* 填充顏色,模式 */;struct line /* 定義直線 */int x1,y1;int x2,y2;char linecol
2、or,linestyle,linethick; /* 線顏色,模式,粗細 */;struct box /* 定義矩形 */int x1,y1;int x2,y2;char linecolor,linestyle;char fillcolor,fillstyle;struct string /* 定義字符串 */int x,y;char str10char backcolor,dir;char str-color,str-style;. /* 定義其它圖素 */.2.將各圖素置于一條鏈表之中typedef struct tagelementlistchar elementtype; /* 標(biāo)識元
3、素種別 */int elementid; /* 元素標(biāo)識符,在接口中用來控制其屬性 */union tagelement struct circle circle;struct box box;struct string string;struct line line;. /* 可在此說明其它元素 */.element;struct tagelementlist *next;elementlist;利用這種數(shù)據(jù)結(jié)構(gòu)可在內(nèi)存中形成一個圖素鏈表,所有操縱都可以此鏈表為基礎(chǔ)。3.定義幾個指針,以備各種操縱elementlist *list-head. *list-end,*list-temp, *l
4、ist-here;4.定義一個全局變量,記錄圖素個數(shù)static int elementcount=0;二、圖形編輯功能的實現(xiàn)本軟件包含的圖形編輯功能主要有摘要:作圖、修改、移動、刪除、復(fù)制,下面僅舉幾例說明實現(xiàn)的方法。1.作圖以圓為例,其它圖形類似。addtolist (elementlist *etempif(list-head=nulllist-head=etemp;list-end=etemp;else list-end-%26next=etemp;list-end=etemp;etemp-%26next=null;elementcount+;2.圖形的移動、刪除、復(fù)制功能以移動為例,
5、首先用箭頭鍵或鼠標(biāo)框取要移動的區(qū)域,區(qū)域矩形的左上,右下坐標(biāo)分別為(block-x1,block-y1,(block-x2,block-y2,然后移動標(biāo)識矩形到要到達的地方,確定。這樣標(biāo)識矩形的終止位置和初始位置存在一個偏差,水平和垂直偏差分別為dl-x,dl-y。接下來搜索內(nèi)存圖素鏈表,確定每個圖素的外接矩形,判定外接矩形是否在初始標(biāo)識矩形內(nèi),若在,則將該圖素的坐標(biāo)屬性值改變dl-x,dl-y。清除圖形區(qū),根據(jù)新的圖素鏈表作圖。圖形的刪除功能類似,只需將符合條件的圖素從鏈表中清除,再修改elementcount值即可。拷貝圖形則只需將符合條件的圖素備份一個結(jié)點,修改結(jié)點的坐標(biāo)屬性值,再將該結(jié)
6、點加進鏈表,相應(yīng)增加elementcount的值。以下為移動圖形的代碼。fnmove (rect rect; /* 定義的矩形 */int i;selectblock (; /* 選擇要移動的塊 */moveblock (; /* 移動塊 */list-temp=list-head;for (i=0;i%26lt;elementcount; i+getrect (%26amp;rect, list-temp; /* 計算list-temp所指圖素的外接矩形 */* 判定外接矩形是否在所選塊內(nèi) */change (list-temp, dl-x,dl-y;/* 改變圖素的坐標(biāo)屬性 */list-
7、temp=list-temp-%26next;clearscreeen (; /* 清除作圖區(qū) */其中,change ( 可以實現(xiàn)如下。change(elementlist *ctemp, int dl-x,int dl-ybreak;break;break;break;.三、文件功能的實現(xiàn)存盤時,打開文件,寫進圖形的背景顏色,寫進圖素個數(shù)elementcount,再將內(nèi)存鏈表中各圖素的屬性值依次寫進文件即可。讀盤時,在內(nèi)存中動態(tài)建立圖素鏈表,將文件中的圖素屬性值依次放進鏈表中,再根據(jù)背景顏色、圖素屬性值在屏幕上顯示圖形。存盤過程實現(xiàn)如下。savefile(char * filenamefile *fp;int i;list-temp=list-head;eid=0;printf ("%s", "cant't open the file "exit(1;for(i=0;i%26lt;elementcount;i+ list-temp-%26elementid=eid;list-temp=list-temp-%2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題代寫申報書是什么
- 課題申報評審書范例范文
- 就業(yè)心理 課題申報書
- 河南小學(xué)課題申報書范例
- 兌換房子合同范本
- 公司外匯借款合同范本
- 益智課堂課題研究申報書
- 閱讀推廣 課題申報書
- 課題申報項目書推廣價值
- 同城工程勞務(wù)合同范例
- 居民自建房經(jīng)營業(yè)態(tài)不超過三種承諾書
- 管理百年知到章節(jié)答案智慧樹2023年南昌大學(xué)
- 萬邦胰島素注射液
- 汽車維修工高級考試試題含參考答案
- 食品銷售監(jiān)督管理工作培訓(xùn)
- 《算法與數(shù)字生活》 教學(xué)設(shè)計
- 組織行為學(xué)(對外經(jīng)濟貿(mào)易大學(xué))智慧樹知到答案章節(jié)測試2023年
- 產(chǎn)品過程特殊特性初始清單(示例)
- 部編人教版小學(xué)五年級道德與法治下冊全冊完整課件ppt
- GB/Z 17625.6-2003電磁兼容限值對額定電流大于16A的設(shè)備在低壓供電系統(tǒng)中產(chǎn)生的諧波電流的限制
- GB/T 14643.4-2009工業(yè)循環(huán)冷卻水中菌藻的測定方法第4部分:土壤真菌的測定平皿計數(shù)法
評論
0/150
提交評論