分析DOS界面下通用圖形編輯軟件的設(shè)計_百度文庫_第1頁
分析DOS界面下通用圖形編輯軟件的設(shè)計_百度文庫_第2頁
分析DOS界面下通用圖形編輯軟件的設(shè)計_百度文庫_第3頁
分析DOS界面下通用圖形編輯軟件的設(shè)計_百度文庫_第4頁
分析DOS界面下通用圖形編輯軟件的設(shè)計_百度文庫_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論