一個簡單的二維光柵圖形軟件包SRGP(SimpleRasterGraphicsPackage)_第1頁
一個簡單的二維光柵圖形軟件包SRGP(SimpleRasterGraphicsPackage)_第2頁
一個簡單的二維光柵圖形軟件包SRGP(SimpleRasterGraphicsPackage)_第3頁
一個簡單的二維光柵圖形軟件包SRGP(SimpleRasterGraphicsPackage)_第4頁
一個簡單的二維光柵圖形軟件包SRGP(SimpleRasterGraphicsPackage)_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、SRGP(Simple Raster Graphics Package) 應(yīng)用應(yīng)用 模型模型 應(yīng)用應(yīng)用 程序程序 SRGPSRGP 圖形圖形 硬件硬件 設(shè)備設(shè)備 輸出流輸出流 輸入流輸入流 u圖元的聲明圖元的聲明 u圖元的屬性圖元的屬性 u填充圖元及屬性填充圖元及屬性 u保存和恢復(fù)圖元的屬性保存和恢復(fù)圖元的屬性 u字符字符 掃描轉(zhuǎn)換掃描轉(zhuǎn)換 頂點(diǎn)(參數(shù))頂點(diǎn)(參數(shù)) 表示的圖形表示的圖形 用戶用戶 點(diǎn)陣表示點(diǎn)陣表示 的圖形的圖形 顯示系統(tǒng)顯示系統(tǒng) ),( 00 yx ),( 11 yx ),( 33 yx ),( 22 yx ),( 00 yx),( 11 yx ),( 22 yx),( 33

2、 yx ),( ii yx ,., 210 xxx 0 p 1 p 2 p 210 ,y,yy ),(yx ,* * 4. 圓弧和橢圓弧圓弧和橢圓弧 Void CircleArc (Point *center, int radius, int startAngle, int endAngle); /畫圓弧畫圓弧 Void EllipseArc(Rectangle *externRect, int startAngle,int endAngle); /畫橢圓畫橢圓 (x3,y3) (x4,y4) 作為對比,作為對比,vc提供了畫圖函數(shù)提供了畫圖函數(shù) 畫點(diǎn)畫點(diǎn) 畫線畫線 折線折線 圓弧圓弧 橢圓橢

3、圓 圓圓 填充等填充等 坐標(biāo)坐標(biāo) 顏色顏色 點(diǎn)點(diǎn)顏色顏色 X1,Y1 X2,Y2 坐標(biāo)坐標(biāo) 點(diǎn)點(diǎn) Point1 Point2 例:例: x1,y1x1,y1 x2,y2x2,y2 x3,y3x3,y3 x4,y4x4,y4 x3,y3x3,y3和和x4,y4x4,y4為圓弧起點(diǎn)終點(diǎn)為圓弧起點(diǎn)終點(diǎn) x1,y1x1,y1和和x2,y2x2,y2為圓弧的矩形框,可計(jì)算半徑為圓弧的矩形框,可計(jì)算半徑 逆時針方向逆時針方向 例:例: ps pe x1,y1 x2,y2 x1,y1x1,y1和和x2,y2x2,y2為圓弧的矩形框,可計(jì)算半為圓弧的矩形框,可計(jì)算半 徑徑 例:例: 重復(fù)畫基本線重復(fù)畫基本線:

4、 : 2 2倍、倍、4 4倍倍 逐段定義線色號逐段定義線色號 l填充方式設(shè)置(控制填充圖元的外觀)填充方式設(shè)置(控制填充圖元的外觀) Void SetFillStyle(enum FillStyle fillstyle)/設(shè)置填充設(shè)置填充 方式的函數(shù)方式的函數(shù) FillStyle定義如下:定義如下: enum FillStyle SOILD, /以當(dāng)前前景色均勻填充圖元以當(dāng)前前景色均勻填充圖元 BITMAP_PATTERN_OPAQUE, BITMAP_PATTERN_TRANSPARENT, / 以規(guī)以規(guī) 則排列的位圖填充;則排列的位圖填充; PIXMAP_ PATTERN /以規(guī)則排列的像

5、素圖填以規(guī)則排列的像素圖填 充;充; 位圖:二值圖像位圖:二值圖像 像素圖:多值圖像像素圖:多值圖像 SRGP提供位圖提供位圖/像素圖資源表像素圖資源表 以規(guī)則排列的位圖填充以規(guī)則排列的位圖填充 BITMAP_PATTERN_OPAQUE / /不透明方式,不透明方式, 對應(yīng)位圖中對應(yīng)位圖中“1 1”的像素用前景色(即當(dāng)前設(shè)定的顏的像素用前景色(即當(dāng)前設(shè)定的顏 色)顯示;對應(yīng)位圖中色)顯示;對應(yīng)位圖中“0 0”的像素用背景色顯示。的像素用背景色顯示。 背景色由函數(shù)背景色由函數(shù)void SetBackgroundColor(int colorIndex)設(shè)定。設(shè)定。 BITMAP_PATTERN

6、_TRANSPARENT /BITMAP_PATTERN_TRANSPARENT /透明方式,對應(yīng)透明方式,對應(yīng) 位圖中位圖中“1 1”的像素依然用前景色顯示;對應(yīng)位圖的像素依然用前景色顯示;對應(yīng)位圖 中中“0 0”的像素,顏色保持不變。的像素,顏色保持不變。 無論是以位圖還是像素圖填充圖元,圖元所呈現(xiàn)無論是以位圖還是像素圖填充圖元,圖元所呈現(xiàn) 的顏色總依賴于當(dāng)前系統(tǒng)查色表的內(nèi)容,因?yàn)槲粓D的顏色總依賴于當(dāng)前系統(tǒng)查色表的內(nèi)容,因?yàn)槲粓D/ /像像 素圖中保存的僅僅是顏色的索引值。素圖中保存的僅僅是顏色的索引值。 解決方法:菜單、按鈕、加亮、變灰、光標(biāo)變化等等解決方法:菜單、按鈕、加亮、變灰、光標(biāo)變

7、化等等 用于圖形的輸入點(diǎn)用于圖形的輸入點(diǎn) 滑塊滑塊 初值初值終值終值 對話框?qū)崿F(xiàn)對話框?qū)崿F(xiàn) 對話框?qū)崿F(xiàn) 應(yīng)用程序應(yīng)用程序 輸入操作輸入操作 等等 待待 用戶操作用戶操作 設(shè)置輸入設(shè)備的輸入方式:設(shè)置輸入設(shè)備的輸入方式: Void SetInputMode(enum Device inputDevice, Void SetInputMode(enum Device inputDevice, enum InputMode inputMode)enum InputMode inputMode) 枚舉變量枚舉變量DeviceDevice與與InputModeInputMode的定義為:的定義為: en

8、um Deviceenum Device LOCATOR, /LOCATOR, /定位設(shè)備定位設(shè)備 KEYBOARD, / KEYBOARD, / 鍵盤設(shè)備鍵盤設(shè)備 ; enum InputMode enum InputMode INACTIVE, /INACTIVE, /非激活狀態(tài)非激活狀態(tài) SAMPLE,SAMPLE,/取樣方式取樣方式 EVENT;EVENT;/事件驅(qū)動方式事件驅(qū)動方式 指定設(shè)備類型指定設(shè)備類型 指定設(shè)備方式指定設(shè)備方式 舉例:設(shè)定位設(shè)備為取樣方式舉例:設(shè)定位設(shè)備為取樣方式 SetInputMode(LOCATOR,SAMPLE);(LOCATOR,SAMPLE); 定位

9、設(shè)備:輸入的信息分為定位設(shè)備:輸入的信息分為3 3部分:部分: 光標(biāo)當(dāng)前的位置光標(biāo)當(dāng)前的位置 各個鍵的狀態(tài)(各個鍵的狀態(tài)(UPUP還是還是DOWNDOWN) 哪個鍵(左鍵還是右鍵)發(fā)生了狀態(tài)改變?哪個鍵(左鍵還是右鍵)發(fā)生了狀態(tài)改變? 信息獲取函數(shù)信息獲取函數(shù) Void SampleLocator(LocatorMeasure, *measure); 應(yīng)用程序應(yīng)用程序 輸入動作輸入動作 隊(duì)列隊(duì)列 輸入動作輸入動作 輸入動作輸入動作 用戶操作用戶操作 基于事件驅(qū)動方法的程序結(jié)構(gòu)基于事件驅(qū)動方法的程序結(jié)構(gòu): 初始化輸入設(shè)備初始化輸入設(shè)備; ; dodo waitEvent(event);/wait

10、Event(event);/* *等待事件發(fā)生等待事件發(fā)生* */ / switch(event)/switch(event)/* *處理事件處理事件* */ / case EVENT1: case EVENT1: procedure1; procedure1; break;break; case EVENT2: case EVENT2: procedure2; procedure2; break;break; ; while (TRUE);while (TRUE); 設(shè)置輸入設(shè)備的輸入方式設(shè)置輸入設(shè)備的輸入方式 Void SetLocatorEchoType(enum EchoType ec

11、hoType);/定位設(shè)備反饋方式的設(shè)置定位設(shè)備反饋方式的設(shè)置 echoTypeechoType取值:取值: 1.NO_ECHO 1.NO_ECHO 無反饋無反饋 2.CURSOR 2.CURSOR 光標(biāo)反饋光標(biāo)反饋 /SRGP /SRGP將各種形狀的將各種形狀的 光標(biāo)存儲在一張資源表中,通過調(diào)用光標(biāo)存儲在一張資源表中,通過調(diào)用 Void SetCursor(int cursorIndex);來選擇所需光來選擇所需光 標(biāo)標(biāo) 3.RUBBER_LINE/RUBBER_RECT 橡皮筋線橡皮筋線/ / 橡皮筋矩形,由二點(diǎn)確定:錨點(diǎn)與當(dāng)前光標(biāo)點(diǎn)。橡皮筋矩形,由二點(diǎn)確定:錨點(diǎn)與當(dāng)前光標(biāo)點(diǎn)。 錨點(diǎn)是固定

12、的,錨點(diǎn)由函數(shù)錨點(diǎn)是固定的,錨點(diǎn)由函數(shù) void SetLocatorEchoRubberAnchor(Point *anchor) 設(shè)置。當(dāng)前光標(biāo)點(diǎn)的位置隨用戶的輸入而變化。設(shè)置。當(dāng)前光標(biāo)點(diǎn)的位置隨用戶的輸入而變化。 錨點(diǎn)錨點(diǎn) 當(dāng)前點(diǎn)當(dāng)前點(diǎn) 錨點(diǎn)錨點(diǎn) 當(dāng)前點(diǎn)當(dāng)前點(diǎn) 定位設(shè)備的各種反饋方式示例定位設(shè)備的各種反饋方式示例 p38 nmt p38 nmt 圖圖2.112.11 函數(shù)函數(shù) Void SetLocatorMeasure(Point *position); /設(shè)置光標(biāo)位置設(shè)置光標(biāo)位置 2.2.6 2.2.6 設(shè)置輸入設(shè)備的屬性設(shè)置輸入設(shè)備的屬性 鍵盤設(shè)備無反饋方式的屬性鍵盤設(shè)備無反饋方式

13、的屬性 Void SetKeyboardEchoOrigin(Point *origin) / / 用來設(shè)置初始化時屏幕上顯示輸入字符串的基點(diǎn)。用來設(shè)置初始化時屏幕上顯示輸入字符串的基點(diǎn)。 當(dāng)鍵盤設(shè)備被激活時,缺省的狀態(tài)為空串。當(dāng)鍵盤設(shè)備被激活時,缺省的狀態(tài)為空串。 下面鍵盤狀態(tài)設(shè)置函數(shù)可改變?nèi)笔顟B(tài):下面鍵盤狀態(tài)設(shè)置函數(shù)可改變?nèi)笔顟B(tài): Void SetKeyboardMeasure(char *keyMeasure) / keyMeasure代表一個字符串代表一個字符串 2.2.6 2.2.6 設(shè)置輸入設(shè)備的屬性設(shè)置輸入設(shè)備的屬性 2.3 2.3 光柵操作光柵操作 2.3.1 畫布畫布 2.3.2 裁剪窗口裁剪窗口 2.3.3 位塊拷貝位塊拷貝 2.3.4 顯示模式顯示模式 2.3.1 畫布畫布 例如點(diǎn)取菜單的過程:例如點(diǎn)取菜單的過程: 1.1.把菜單將要覆蓋的屏幕區(qū)域保存起來把菜單將要覆蓋的屏幕區(qū)域保存起來 2.2.把系統(tǒng)保存的菜單拷貝到屏幕上把系統(tǒng)保存的菜單拷貝到屏幕上 3.3.恢復(fù)屏幕區(qū)域,把保存的象素重新拷貝到屏幕上恢復(fù)屏幕區(qū)域,把保存的象素重新拷貝到屏幕上 可用于菜單或其他象素區(qū)域可用于菜單或其他象素區(qū)域 有變化時的處理有變化時的處理 2.3.1

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論