freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

一種矢量圖形工具的設計與實現(xiàn)—免費-閱讀頁

2024-12-27 10:25本頁面
  

【正文】 繪制模式下 ,線條不是彩色的 , 拖動的圖形都不是用圖形元素的實際顏色 。 在矢量圖形系統(tǒng)設計中 , 一般采用 CClientDC 對象 , 在交互繪制圖形元素操作完成后 , 即時在視圖中重畫這個新增的圖形元素 。所謂圖形重畫,就是把當前視圖屏幕重新繪制一次,實際上也就是讓視圖類的函數(shù) OnDraw(CDC* pDC)重新執(zhí)行一次。 1. 全屏重畫 全屏重畫有兩種方式: ①在視圖類函數(shù)的實現(xiàn)代碼中,用以下代碼來激活重畫機制: CDrawDoc* pDoc=GetDocument()。 函數(shù) UpdateAllViews 使 屬于當前文檔對象的所有視圖重畫。 ②在視圖類函數(shù)的實現(xiàn)代碼中,用以下代碼激活重畫機制: Invalidate()。Invalidate 函數(shù)與 UpdateAllViews 函數(shù)的不同點是,它只能使當前視圖重畫,而與其同文檔的其他視圖并不重畫。修改后的代碼如下: Void CDrawView::OnGraphRedraw() { CDrawDoc* pDoc=GetDocument()。 Invalidate()。 2. 局部重畫 在很多情況下, 往往只希望將當前視圖屏幕的一部分區(qū)域 進行 重畫,即局部重畫。 1) InvalidateRect 函數(shù)的定義為 : Void InvalidateRect(LPCRECT lpRect ,BOOL bErase=TRUE)。這個函數(shù)的調用方法與函數(shù) Invalidate 類似。 2) InvalidateRgn 函數(shù) InvalidateRgn 函數(shù)的定義為: void InvalidateRgn(CRgn* pRgn, BOOL bErase=TRUE)。 參數(shù) pRgn是指向一個 CRgn對象的指針。以下代碼可使 CRgn 對象 rgn指定的區(qū)域重畫 : InvalidateRgn(amp。 第 15 頁 共 25 頁 重畫上屏、首屏和顯示全圖 1) 重畫上屏 要實現(xiàn)重畫上屏 的 操作功能,只需把 m_CurrentScreen 的值減去 1,從結構數(shù)組 m_Screen 中 取出屏幕參數(shù)重畫圖形即可。 if(pDocm_CurrentScreen0) //如果當前不是首屏,當前圖形屏幕序號減 1 pDocm_CurrentScreen。 m_yStart=p_Screen[pDocm_CurrentScreen].sy。 Invalidate()。 在實現(xiàn)文件 中, 在重載的虛函數(shù) OnActiveView 中對 p_Screen進行初始化,將它指向當前文檔對象中的結構數(shù)組 m_Screen: void CDrawView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { p_View=this。 p_Screen=pDocm_Screen。 } 2) 重畫首屏 對于重畫首屏 的 功能來說,只要取出存儲在結構數(shù)組 m_Screen 中的首屏參數(shù), 并對視圖重畫即可。 if(pDocm_CurrentScreen==0) return 。 m_yStart=p_Screen[0].sy。 pDocAddScreen(m_xStart,m_yStart,blc)。 } 3) 顯示全圖 ①得到邊界矩形 在矢量圖形系統(tǒng)中,有一種情況是,圖形中所有的圖形元素都在視圖屏幕的一個 角上,只占圖幅的一小部分。實現(xiàn)顯示全圖功能的思路是,通過得到每一類圖形元素(如直線、連續(xù)直線)的邊界矩形,然后根據(jù)視圖屏幕的大?。ㄟ壿嬜鴺耍┻M行計算,得到屏幕的參數(shù) m_xStart,m_yStart,blc。在 節(jié)中我們已經介紹了邊界矩形的實現(xiàn)方法, 把所有圖形元素的邊界矩形坐標進行比較, 就可以得到所有圖形元素的邊界矩形。 指 針參數(shù)用來返回邊界矩形的最小和最大坐標,當能計算得到邊界矩形時,函數(shù)返回 TRUE,否則, 函數(shù)返回 FALSE。 在函數(shù) GetRect 中,首先對記錄最小值和最大值的變量初始化,然后對所有的 直線連續(xù)直線圓圓弧標注文本多邊形區(qū)域網(wǎng)絡點等類圖形元素 進行循環(huán), 得到第 17 頁 共 25 頁 每個圖形元素的邊界矩形,并比較運算得到所有圖形元素的邊界矩形。 ②顯示全屏 在得到所有圖形元素的邊界矩形后,就可以調整視圖屏幕的基點和比例,使當前視圖正好能夠繪制下所有的圖形元素。 CDrawDoc* pDoc=GetDocument()。 SetCursor(LoadCursor(NULL,IDC_WAIT))。minx,amp。maxx,amp。 SetCursor(LoadCursor(NULL,IDC_ARROW))。 if(!pb) return 。 blc=(maxyminy)/(m_hScreen20)。 m_xStart=minx10*blc。 p_Screen[0].sx=m_xStart。 p_Screen[0].blc=blc。 Invalidate()。在文檔類第 18 頁 共 25 頁 CDrawDoc 中,定義一個結構數(shù)組和一個變量 : Protected: GraphSelectStruct *GraphSelect。 //選中圖形元素的數(shù)目 結構 GraphSelectStruct 在頭文件 中( CDrawDoc 類前)定義為 : Typedef struct { Short int Lb。 Int id_only。 將選中的圖形元素存儲在結構數(shù)組 GraphSelect 中,成員變量 Lb 存儲選中圖形元素的類別; 成員變量 Index 存儲圖形元素的序列號,即圖形元素在指針數(shù)組中的下標;成員變量 id_only 存儲這個圖形元素惟一的識別號,即圖形元素中的成員變量 m_id_only。 } 在 CDrawDoc 類的析構函數(shù)中,刪除動態(tài)分配的結構數(shù)組: CDrawDoc::~CDrawDoc() { Delete GraphSelect。 函數(shù) AddSelectList實現(xiàn)在結構數(shù)組 GraphSelect中增加一個選中的圖形元素,增加成功是返回 TRUE, 否則函數(shù)返回 FALSE。in_GraphSelect。amp。amp。 } GraphSelect[n_GraphSelect].Lb=Lb。 GraphSelect[n_GraphSelect++].id_only=id_only。 } ②屏幕保留 為了能夠將選中的圖形元素在屏幕上保留,需要修改圖形繪制函數(shù),使視圖重畫時,選中的圖形元素仍然能特殊顯示。 函數(shù)的實現(xiàn)代碼如下: void CDrawDoc::DrawGraph(CDC* pDC,int Lb,int index,int DrawMode,int DrawModel,short BackColor) { GetGraph(Lb,index)Draw(pDC,DrawMode,DrawModel,BackColor)。i=8。 while(nn) GetGraph(i,nn)Draw(pDC,m_DrawMode,m_DrawModel,BackColor)。in_GraphSelect。 } } 2) 放棄選中的圖形元素 所謂“放棄”, 就是取消對圖形元素的選中。 取消對圖形元素的所有選中,從數(shù)據(jù)操作角度來說是非常重要的,只需使選中的圖形元素是為 0即可,但除數(shù)據(jù)方面所做操作外,還需要在視圖中 把選中的圖形元素恢復到正常顯示狀態(tài)下,從直覺上感覺到放棄了對圖形元素的選中。 CClientDC ht(this)。ipDocn_GraphSelect。ht,pDocGraphSelect[i].Lb,pDocGraphSelect[i].index,0,0,0)。 } 圖形移動 圖形移動指的是將圖形元素在橫向和縱向上移動一定的偏移量,得到移動后圖形元素的坐標。 為了實現(xiàn)圖形元素的移動功能, 需要在圖形元素基類 CDraw 中定義一個純虛函數(shù): Public: virtual void Move(float x_Move ,float y_Move )=0。 在各個圖形元素類中增第 21 頁 共 25 頁 加這個虛函數(shù)的重載定義 : Public: Virtual void Move(float x_Move ,float y_Move )。 5 系統(tǒng)測試 本課題是在 windows2021 的系統(tǒng)下, vc++ 的運行環(huán)境中設計開發(fā)的。 下面以簡單的圖形擺動 為例說明驗證結果: 首先畫出幾個簡單的圖形,然后選擇圖形操作下拉選項的圖形擺動操作,鼠標拖動的白線就是圖形擺動時圖形發(fā)生的改變。同時還可以驗證重畫上屏的操作,圖形恢復到未擺動時的樣子。 ? 圖 4 中已經選中了圖形擺動的操作,圖中白線就 是鼠標拖動的痕跡,從左往右拖動,這時候還沒有第二次按下鼠標左鍵。 ? 這個時候 可以驗證重畫上屏的操作 ,就可以得到擺動前的圖形。 圖 3 圖形擺動前的效果 第 22 頁 共 25 頁 圖 4 圖形擺動前操作 鼠標左鍵第二次按下,就會出現(xiàn)如圖 5所示效果,圖形已經實現(xiàn)了往右擺動: 圖 5 擺動后的效果 結 論 本次課題的研究主要分析了基本的矢量圖形工具系統(tǒng)的實現(xiàn)方法,并對 其中重要的函數(shù)和算法進行了描述。 可以處理基本的圖形元素,有 方便 的交互繪制設計,同時具有豐富的圖形操作能力。 由于時間關系,矢量圖形的顏色和形狀不能進行選擇,并且沒有實現(xiàn)數(shù)據(jù)庫相關的圖形保存功能,在今后的設計中,加入數(shù)據(jù)庫應用技術,實現(xiàn)數(shù)據(jù)庫瀏覽視圖和編輯功能以及通用數(shù)據(jù)庫過濾功能,近一步完善系統(tǒng)功能 。 [2] 蔡宇輝 ,李軍義 .面向對象程序設計 [M].北京 : 機械工業(yè)出版社出版 ,2021。 [4] 夏云龍 .最新 Visual C++ 使 用手冊等編著 [M].北京 : 電子工業(yè)出版社 ,2021。 [6] 官章全等 .VC++高級編程范例 [D].北京 : 電子工業(yè)出版社 ,2021。 第 24 頁 共 25 頁 致 謝 本文是在 萬武南 老師的熱情關心和指導下完成的,她淵博的知識和嚴謹?shù)闹螌W作風使我受益匪淺,對順利完成本課題起到了極大的作用。她無論在理論上還是實踐上都給予了我很大的幫助,給了我許多有益的建議和意見,使我的思維得到了進一步開闊,使我得到不少的提高,這對于我以后的工作和學習都有一種巨大的幫助,感謝她耐心的輔導。文中除了特別加以標注地方外,不包含他人已經發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學院或其他教學機構的學位或證書而使用過的材料。 關于學位論文使用權和研究成果知識產權的說明: 本人完全了解成都信息工程學院有關保管使用學位論文的規(guī)定,其中 包括: ( 1)學校有權保管并向有關部門遞交學位論文的原件與復印件。 ( 3)學??梢詫W術交流為目的復制、贈送和交換學位論文。 ( 5)學??梢怨紝W位論文的全部或部分內容(保密學位論文在解密后遵守此規(guī)定)。 特此聲明! 作者簽名: 2021 年 月 日 第 26 頁 共 25 頁 54 Of Vainglory It was prettily devised of Aesop。s really a pleasure now and then to bee a mere nothing, especially when a man is as highly placed as I am. And then to think that we all, even with patent lacquer, are nothing more than insects of a moment on that anthill the earth, though we may be insects with stars and garters, places and offices! One feels quite a novice beside these venerable millionyearold boulders. On last New Year39。s diversion, namely, the wild hunt to Amack. Ah, you don39。s eve, to the Brocken。s night through the air to Amack. They sit backwards on their painting b all lapse of time, and had bee a cipher and a n
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1