二十講SRGP圖形包使用實例課件_第1頁
二十講SRGP圖形包使用實例課件_第2頁
二十講SRGP圖形包使用實例課件_第3頁
二十講SRGP圖形包使用實例課件_第4頁
二十講SRGP圖形包使用實例課件_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二十講:SRGP圖形包使用實例SRGP簡介基本繪圖函數(shù)點、線、面SRGP_defPoint(int x, int y);SRGP_lineCoord(int x1, int y1, int x2, int y2);SRGP_line(point pt1, point pt2);SRGP_polyLine(int vert_count, point *vertices);繪圖屬性SRGP_setLineStyleSRGP_setLineWidth文本SRGP_text(point pt, char *text);顏色、字體SRGP_setColor(int value);SRGP_loadCo

2、lorTable(int start, int count, ush *red, ush *green, ush *blue);SRGP_setFont(int value);SRGP_inquireTextExtent(char*text, int *width, int *height, int* descent); /見書P14, 本API有錯XY坐標系SRGP簡介基本繪圖函數(shù)顏色的處理#define BLACK 0#define WHITE 1#define RED 2 #define GREEN 3#define BLUE 4#define YELLOW 5const int Max

3、Color = 15; unsigned short red = 0, 255, 255, 0, 0, 255, 255, 0, 192, 114, 240, 130, 225, 10, 255;unsigned short green = 0, 255, 0, 255, 0, 255, 0, 255, 192, 114, 240, 130, 225, 10, 255;unsigned short blue = 0, 255, 0, 0, 255, 0, 255, 255, 192, 114, 240, 130, 225, 140, 230;SRGP_loadColorTable(0, Max

4、Color, red, green, blue); /裝載顏色表SRGP_setColor(RED);/設置為紅色 RGB(255, 0, 0)SRGP_setColor(YELLOW);/設置為黃色 RGB(255, 255,0)SRGP簡介基本交互處理設置設備模式SRGP_setInputMode(LOCATOR, SAMPLE);定位設備的測量locator_measure Mouse;do SRGP_sampleLocator(&Mouse);/采集鼠標信息/判斷鼠標的狀態(tài),做相應操作 while ( );采樣模式SRGP簡介基本交互處理/Srgppublic.htypedef enu

5、m UP, DOWN buttonStatus;typedef struct point postion;buttonStatus button_chord3;int button_of_last_transition; locator_measure;SRGP_sampleLocator(&Mouse);/鼠標信息采樣1. if ( Mouse.buttonChord0=DOWN ) /左鍵按下2. if ( Mouse.buttonChord0=UP ) /左鍵彈起3. if ( Mouse.buttonChord1=DOWN ) /右鍵按下鼠標狀態(tài)SRGP簡介應用說明void UserM

6、ain() SRGP_begin(COOL Drawing V1.0, width, height, 4, FALSE); SRGP_setInputMode(LOCATOR, SAMPLE); do /主處理循環(huán) SRGP_sampleLocator(&Mouse); /采集鼠標信息,給出反饋 while ( 1 ); SRGP_end();COOL Drawing的界面COOL Drawing的界面COOL Drawing的界面設計模擬了IE 4風格。圖標和菜單按鈕處于平面狀態(tài)或凹陷狀態(tài)(標志此時處于某種模式中);當鼠標指針進入該區(qū)域時,產(chǎn)生浮起效果;移出該區(qū)域后,圖標恢復原來狀態(tài)。鼠標在

7、該區(qū)域內(nèi)單擊,使圖標凹陷或恢復原平面狀態(tài),并觸發(fā)對應事件;菜單與工具條有延時的徐徐彈出,富有動感。COOL Drawing的處理流程初始化繪圖環(huán)境 按參數(shù)動態(tài)創(chuàng)建菜單條,工具條,畫板等對象由菜單條,工具條,畫板這三個對象監(jiān)聽鼠標信息某個對象監(jiān)聽到與它有關(guān)的鼠標動作,則該對象由監(jiān)聽狀態(tài)進入處理狀態(tài)。由該對象內(nèi)部的各個子對象開始監(jiān)聽。COOL Drawing對鼠標的反應程序采用采樣模式。原因:程序需要捕捉鼠標移動事件,而該事件被SRGP屏蔽。各個對象均有各自的監(jiān)聽函數(shù),在主處理循環(huán)中輪流監(jiān)聽。同樣,在對象的監(jiān)聽函數(shù)中由各個子對象輪流監(jiān)聽。一旦鼠標進入某對象的區(qū)域,則觸發(fā)對應事件,進入處理狀態(tài)。 C

8、OOL Drawing的組成MenuBar 菜單條類IconBar 工具條類StatusBar 狀態(tài)條類Canvas 畫板類 這些對象由參數(shù)動態(tài)創(chuàng)建雖然SRGP庫建立在C語言環(huán)境中,但程序的編寫采用了面向?qū)ο蟮乃枷耄好總€結(jié)構(gòu)都有其對應的方法(函數(shù)),函數(shù)的傳入?yún)?shù)中有結(jié)構(gòu)指針,即每個函數(shù)只對其所屬的結(jié)構(gòu)進行操作。通過這種方法實現(xiàn)了數(shù)據(jù)的封裝。 MenuBar 菜單條簡介typedef struct int x1, y1, x2, y2;char str20; MenuItem;typedef struct int x1, x2, y1, y2;int nItem;MenuItem* item;

9、COLORREF* buf; Menu;typedef struct int x1, x2, y1, y2;point origin;char str20;Menu menu; MenuButton;typedef struct int nMenu;MenuButton* btn;int x1, x2, y1, y2; MenuBar;在MenuButton與被激活的Menu (以及其中的MenuItem子對象)的處理狀態(tài)中,將有三種情況產(chǎn)生:1.鼠標在MenuButton上單擊,彈出的Menu收回(恢復保存的背景),并使凹陷的Button恢復浮起。2 鼠標移動至某MenuItem上方,該對象

10、監(jiān)聽到該事件,給出反饋使文字以反色顯示。3 鼠標移動出本MenuButton以及Menu的范圍,這兩個對象退出處理狀態(tài),MenuButton恢復初始狀態(tài)并收回彈出的Menu。其他MenuButton采集到鼠標信息進入的信息,按鈕凹陷并彈出菜單,這兩個對象進入處理狀態(tài)。MenuBar 的事件處理IconBar 工具條簡介特點:1. Icon代表著一種繪圖工具、繪圖模式或繪圖顏色。某Icon選中后,將使用這種風格繪圖。2. 一個IconGroup內(nèi)只能有一個Icon處于選中狀態(tài)。3. 鼠標在Icon上停留一定時間后,將彈出提示Hint。4. 鼠標移出IconBar一段時間后,IconBar將自動隱藏(在窗口左部縮成一個小條) 。鼠標移到隱藏的IconBar上方一段時間后,IconBar又將自動彈出。不足之處1. 只采用缺省字體,界面不夠豐富。2. 文字長度的計算有誤。 可使用SRGP_inquireTextExtent函數(shù),該API的實現(xiàn)有錯,請在Font.c中改

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論