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

正文內(nèi)容

windowsgdi雙緩沖繪圖技術(shù)研究---畢業(yè)論文(參考版)

2024-11-18 02:32本頁面
  

【正文】 在 VC++中.我們可以采用 GDI位圖和內(nèi)存設(shè)備環(huán)境的方法來消除屏幕顯示動態(tài)圖形的閃爍問題,并提高顯示的速度。解決這一問題我們雙緩存繪圖技術(shù)。通過本小結(jié)的了解 Windows映射模式和映射模 式的區(qū)別,以及各自的實現(xiàn)的方法等等。運行結(jié)果如圖 4— 1a和圖 4— 1b所示。 Pdc_ellipse(crect(200,200,200,200))。 Else { //” 可變比例 “ 映射模式下的圖形顯示; //通過設(shè)置窗口與視口的大小,以便確定 X方向和 Y方向上的比例因子; Pdc_setwindowext(400,400)。amp。 DrawCoord(pDC)。 //設(shè)置屏幕窗口中心為原點; Pdc_SetViewportOrg(Cpoint(,))。 //選取庫存 GDI對象; pDC_SelectStockObject(NULL_BRUSH)。 GetClientRect(amp。請注意該圓形在不同映射模式下的大小和坐標(biāo)軸方向的變化。 pDCTextOut(10,”Y”)。 pDCMoveTo(0,0)。 pDCLineTo(,0)。再選中 Add Memder FUNCTION?.. 命令添加成員函數(shù) DrawCoord(CDC*pDC)。該函數(shù)原型如下: Virtual void SetCheck(int nCheck=1); 參數(shù) nCheck指定了菜單狀態(tài), “0” 表示不加選擇標(biāo)記, “1” 表示加選擇標(biāo)記, “2” 則 表示未確定狀態(tài)。 pCmdUISetCheck(flag)。每個菜單命令部對應(yīng)一個命令更新函數(shù),形式如下: void CmapModeView::OnUpdateMapmodeLonglish(CcmdUI*pCmdUI) { //TODO:Add your mand update UI handler code here int flag=0。 Invalidate(TRUE)。 表 4— 2 菜單命令及其命令響應(yīng)函數(shù) 命令 ID 標(biāo)題 命令消息函數(shù) ID_MAPMODE_TEXT TEXT(pixels) Om_nMapModeText() ID_MAPMODE_LOMETRIC LOMETRIC() Om_nMapModeLomeitric() ID_MAPMODE_HIMETRIC HIMETRIC() Om_nMapModeHimetric() ID_MAPMODE_LONGLISH LONGLISH() Om_nMapModeLonglish() ID_MAPMODE_HIENGLISH HIENGLISH() Om_nMapModeHienglish() ID_MAPMODE_ISOTROPIC ISOTROPIC(縱橫比為 1) Om_nMapModeIsotropic() ID_MAPMODE_ANISOTROPIC ANISOTROPIC(縱橫比可變 ) Om_nMapModeAnisotropic() 最后,實現(xiàn)命令消息函數(shù),以便確定當(dāng)前的映射模式。再添加如表 4— 2所示的命令 ID。 第二步, ResouceView標(biāo)簽,選擇打開 Menu項,用鼠標(biāo)左鑲雙擊名為IDR_MAINFRAME的菜單資源。 第一步,使用 VC++創(chuàng)建一個 MFC AppWizard(exe)工程,并命名為 MapMode(此工程名用戶可以任意指定 )。返回值是先前的映射模式。該函數(shù)的聲明如下: virtual int SetMapMode(int nMapMode)。在 MM_ISOTROPIC模式下, x方向與 Y方向上酌比例因子總是相等的 (即縱橫比為 1: 1);而在 MM_ANISOTROPIC模式下, x方向與 Y方向上的比例因子可以不相等 (即縱橫比任意 ),因此通過這一特點,我們可以很容易的將圓拉伸成橢圓 [15]。在這些模式下,我們可以改變它們的比例因子和坐標(biāo)原點。 (磅是一種度量單位,在 Windows中 1磅等于 1/ 72英寸 )。 (即笛卡兒坐標(biāo)系 )它們之間的區(qū)別就在于設(shè)備坐標(biāo)到邏輯坐標(biāo)轉(zhuǎn)撓的實際比例因子 不同。 MM_LOMETRIC、 MM_HIMETRIC、 MM_LONGLISH、 MM_HIENGLISH 、 MM_TWIPS 被稱為 “ 固定比例 ” 映射模式。 表 4— 1 Windows的 8種映射模式 映射模式 映射識別碼 邏輯單位 X軸正向 Y軸正向 MM_TEXT 1 Pixels 右 下 MM_LOMETRIC 2 右 上 MM_HIMETRIC 3 右 上 MM_LONGLISH 4 右 上 MM_HIENGLISH 5 右 上 MM_TWIPS 6 1/1440in 右 上 MM_ISOTROPIC 7 可變( x等于 y) 可變的 可變的 MM_ANISOTROPIC 8 可變( x不等于 y) 可變的 可變的 MM_TEXT映射模式允許應(yīng)用程序利用設(shè)備像素工作,因此用它來表示設(shè)備坐標(biāo)系是再合適不過了。 windows提供了幾種映射模式,或稱為坐標(biāo)系,可以通過它們來和設(shè)備坐標(biāo)相聯(lián)系。 4 Windows映射模式 Windows映射模式就是在 Windows方式下的屏幕的坐標(biāo)方式。 本章主要介紹了與繪圖相關(guān)的 GDI對象類的定義和相關(guān)類的構(gòu)造以及相關(guān)的應(yīng)用。 CBitmap對象 位圖在顯示之前必須先裝入內(nèi)存,當(dāng)駐留在內(nèi)存的位圖數(shù)據(jù)送到視頻內(nèi)存時,位圖就在顯示器上顯示。 BOOL LoadBitmap( UINT nIDResource )。 CBitmap對象 MFC只提供了處理 DDB位圖的類 CBitmap,要顯示 DIB位圖,可以先將一個 DIB位圖轉(zhuǎn)換為 DDB位圖。 CBitmap類 位圖是一個由位構(gòu)成的圖象,它是由一系列數(shù)據(jù)排列而成的點陣結(jié)構(gòu),這些數(shù)據(jù)分別表示各點的顏色信息。 與 CRgn對象一樣,初始化后的 Cpalette對象也帝要調(diào) 用基類的成員函數(shù) DeleteObject來刪除對象。 PALETTEENTRY palPalEntry[1]。此函數(shù)的完整聲明如下; BOOL Cpalette(LPLOGPALETTE lpLonPalette); 其參數(shù) lpLonPalette指向一個 LOGPALETTE指針,它包含了邏輯調(diào)色板的顏色信息。 CPalette對象 調(diào)色扳的構(gòu)造函數(shù)只有一個,聲明如下 Cpalette(); 該構(gòu)造函數(shù)的作用只是聲明了一個調(diào)色板對象,應(yīng)用該對象之前還需調(diào)用初始化函數(shù)對 該調(diào)色扳對象進(jìn)行初始化。 Windows使 用應(yīng)用程序的邏輯調(diào)色板和系統(tǒng)調(diào)色扳來確定位用的顏色。 表 3— 9 區(qū)域組合的返回結(jié)果 返 回 值 含 義 COMPLEXREGION 區(qū)域覆蓋邊界 ERROR 區(qū)域無效 NULLREGION 區(qū)域為空 SIMPLEREGION 區(qū)域沒有覆蓋邊界 CPalette類 調(diào)色板是應(yīng)用程序和彩色輸出設(shè)備 (如顯示器 )之間的接口。表 3— 8列出了一些參數(shù)值及其對應(yīng)的操作模式。 參數(shù) pRgnl和 pRgn2是兩個已經(jīng)存在的區(qū)域?qū)ο笾羔槨? 其原型聲明如下: BOOL PtInRegion(LPCRECT lpRect)const ; 參數(shù) lpRect指向了一個 RECT結(jié)構(gòu)或是 CRect對象,通過該參數(shù)指定了結(jié)定的矩形。參數(shù) point的兩個分量 x和 y與前面的參數(shù)含義相同。 ● 使用 PtInRegion()成員函數(shù),來判斷給定點是否在區(qū)城內(nèi)部。 NULLREGION 表示區(qū)域為空。 表 3— 7 區(qū)域類型 返 回 值 說 明 COMPLEXREGION 表示一個具有重疊邊界的區(qū)域。 參數(shù) point的兩個分量 x和 y的含義與上面肋參數(shù) x和 y相同。 ● 使用 OffsetRgn()成員函數(shù),按照給定的偏移量移動一個區(qū)域。 //刪除定義的 m_Rgn對象; 其中 m_Rgn為初始化后的 CRgn對象。 由于 CRgn對象的析構(gòu)函數(shù)不能刪除初始化后的 CRgn四對象,所以需要調(diào)用其基類的成員函數(shù) DeleteObject來刪除定義的 CRgn對象。 下面分別調(diào)用上面兩個函數(shù)進(jìn)行初始化一個矩形區(qū)域 (0, 0, 200, 200)和一個橢圓形區(qū)域; //定義一個 Crect對象; Crect rr(50, 50, 200,200); //初始化 CRgn對象成為一個矩形區(qū)域; (,)。 參數(shù) nMode指定了該區(qū)域的填充模式。 }POINT 參數(shù) nCount指定了由 參數(shù) lpPoints確定的數(shù)組的個數(shù)。 POINT結(jié)構(gòu)完整定義如下: typedef struct tagPOINT{ int x。 ● 使用成員函數(shù) CreatePolygonRgn()創(chuàng)建一個多邊形區(qū)域, BOOL CreatePolygonRgn(LPPOINT lpPoints,int nCount,int nMode)。 ● 使用成員函數(shù) CreateEllipticRgnIndirect()間接創(chuàng)建一個橢圓形區(qū)域, BOOL CreateEllipticRgnIndirect(LPCRECT lpRect); 參數(shù) lpRect指向一個 RECT結(jié)構(gòu)或是 Crect對象,通過該參數(shù)可以定義出所要創(chuàng)建的橢圓形區(qū)域的邊界矩形。 ● 使用成員函數(shù) CreateEllipticRgn()直接創(chuàng)建一個橢圓形區(qū)域, BOOL CreateEllipticRgn(int x1,int y1,int x2,int y2)。 }RECT。 參數(shù) lpRect指向一個包含矩形區(qū)域的左上角點和右下角點 的邏輯坐標(biāo)的 RECT結(jié)構(gòu)或是 Crect對象。 該區(qū)域的范圍被限制在 32, 76732 , 767邏輯單位,當(dāng)不在使用由該成員函數(shù)創(chuàng)建的 區(qū)域?qū)ο髸r,應(yīng)用程序應(yīng)該調(diào)用 CGDIObject:: DeleteObject()成員函數(shù)將該區(qū)域?qū)ο髣h除。使用該成員函數(shù)創(chuàng)建一個矩形區(qū) 域,該區(qū)域被存放在 一個 CRgn對象中。 初始化 CRgn對象 對區(qū)域?qū)ο筮M(jìn)行初始化可以采用以下幾種方法: ● 使用成員函數(shù) CreateRectRgn()直接創(chuàng)建一個矩形區(qū)域, BOOL CreateRectRgn(int x1,int y1,int x2,int y2)。 3. 構(gòu)造 CRgn對象 可以使用構(gòu)造函數(shù)創(chuàng)建一個未被初始化的區(qū)域?qū)ο螅? CRgn(); 構(gòu)造一個 CRgn對象。在窗口中,一個區(qū)域 可以是橢圓形的或是多邊形的。 該結(jié)構(gòu)各成員變量的值與前面介紹的 CreateFont函數(shù)的參數(shù)基本相同。 TCHAR lfFaceName[LF_FACESIZE]。 BYTE lfQuality。 BYTE lfOutPrecision。 BYTE lfStrikeOut。 BYTE lfItalic。 LONG lfOrientation。 LONG lfWidth。該參數(shù)的值一定不能超過 30個字符,這個名稱可由用戶自行定義。高 4位指定了字體族。 參數(shù) nPitchAndFamily:確定了字體的間距和所屬的族。該參數(shù)說明怎樣裁剪位于裁剪區(qū)之外的部分字體。一般取下列值之一:OUT_CHARATER_PRECIS、 OUT_DEFAULT_PRECIS、 OUT_DEVICE_PRECIS、 OUT_RASTER_PRECIS、OUT_STRING_PRECIS、 OUT_STROKE_PRECIS和 OUT_TI_PRECIS。表 3— 6列出了預(yù)定義的字符常量的值。 參數(shù) cStrikeOut:確定字體是否被穿透。 表 3— 5字體的濃度值 —— 粗細(xì)程度 常 量 值 常 量 值 FW_DONTCARE 0 FW_SEMIBOLD 600 FW_THIN 100 FW_DEMIBOLD 600 FW_EXTRALIGHT 200 FW_BOLD 700 FW_ULTRALIGHT 200 FW_EXTRABOLD 800 FW_LIGHT 300 FW_ULTRABOLD 800 FW_NORMAL 400 FW_BLACK 900 FW_REGUNAL 400 FW_HEAVY 900 FW_MEDIUM 500 參數(shù) bItalic:確定字體是否為斜體。 參數(shù) nWeight :定義了字體的濃度即字體的粗細(xì)程度 (像素數(shù) 1/1000)。 參數(shù) nOrientation:定義了角度 (以 1/ 100為單位 ),該角度是一個字符的基線與 x軸的夾角。 參數(shù) nWindth:定義邏輯單位度量的字體的平均寬度。 CFont類對象 調(diào)用 CrateFont函數(shù)來選擇一種字體時,需要的很
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1