VC中MFC繪圖詳細教程課件_第1頁
VC中MFC繪圖詳細教程課件_第2頁
VC中MFC繪圖詳細教程課件_第3頁
VC中MFC繪圖詳細教程課件_第4頁
VC中MFC繪圖詳細教程課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1本章主要內(nèi)容設備環(huán)境GDI對象使用畫筆使用畫刷輸出文本映射模式顯示位圖1本章主要內(nèi)容設備環(huán)境2GDIGDI(GraphicsDeviceInterface)

(1)GDI和Windows設備驅(qū)動程序來支持設備無關性。(2)負責系統(tǒng)與用戶或繪圖程序之間的信息交換,并控制在輸出設備上顯示圖形或文字。(3)應用程序主窗口、菜單、對話框都由GDI繪制GDI2GDIGDI(GraphicsDeviceInterf3設備環(huán)境

設備環(huán)境設備環(huán)境(DeviceContext)(有譯為設備描述表、設備上下文)(1)是繪圖屬性(字體、顏色等)和方法(各種繪圖函數(shù))的集合(2)是一個用來確定或改變?nèi)魏卧O備的GDI輸出位置和形象的屬性集合CDC類CClientDCCWindowDCCPaintDCCMetaFileDC3設備環(huán)境設備環(huán)境設備環(huán)境(Device4(1)CWindowDC和CClientDCCPaintDC區(qū)別CWindowDC提供客戶區(qū)和非客戶區(qū)畫圖的設備環(huán)境;坐標原點在屏幕左上角CClientDCCPaintDC提供畫圖的設備環(huán)境;坐標原點在客戶區(qū)左上角(2)CClientDC和CPaintDC區(qū)別CPaintDC是響應WM_PAINT消息,用在OnPaint()函數(shù)中;只支持屏幕顯示CClientDC不響應WM_PAINT消息,只擔負此時的繪圖工作;支持屏幕顯示,也支持打印CDC常用函數(shù)(參見MSDN)設備環(huán)境

設備環(huán)境4(1)CWindowDC和CClientDCCPain5獲取設備環(huán)境(1)使用GetDC()函數(shù)

CDC*CWndGetDC()intReleaseDC(CDC*pDC)(2)直接構(gòu)造CDC對象用聲明一個CDC類或其派生類對象的方式來獲取設備環(huán)境

CClientDCdc(CWnd*)設備環(huán)境

設備環(huán)境5獲取設備環(huán)境設備環(huán)境設備環(huán)境6GDI對象提供更豐富的圖形操作函數(shù),設備環(huán)境類提供函數(shù)進行簡單的圖形繪制CGdiObjectCBitmapCBrushCPaletteCPenCRgnGDI對象GDI對象6GDI對象提供更豐富的圖形操作函數(shù),設備環(huán)境類提供函數(shù)進行7使用畫筆、畫刷

使用畫筆、畫刷(1)構(gòu)建畫筆、畫刷

CPen();CPen(intnPenStyle,intnWidth,COLORREFcrColor);

CPen(intnPenStyle,intnWidth,constLOGBRUSH*pLogBrush,intnStyleCount=0,constDWORD*lpStyle=NULL);

nPenStyle:參看課本P146nWidth:>1時,第一個參數(shù)中的PS_DASH(虛線)、PS_DOT(點線)、PS_DASHDOT(點劃線)、PS_DASHDOTDOT(雙點劃線)無效

crColor:RGB(255,255,255)顏色CBrush(COLORREFcrColor);

CBrush(intnIndex,COLORREFcrColor);

CBrush(CBitmap*pBitmap);crColor:RGB(255,255,255)顏色

nIndex:畫刷陰影線風格

pBitmap:位圖畫刷7使用畫筆、畫刷使用畫筆、畫刷(1)構(gòu)建畫筆、畫刷8(2)選入畫筆:將該畫筆選入到設備環(huán)境中

CPen*SelectObject(CPen*pPen)CBrush*SelectObject(CBrush*pBrush)virtualCFont*SelectObject(CFont*pFont)intSelectObject(CRgn*pRgn)(3)調(diào)用繪圖函數(shù)輸出使用畫筆、畫刷

使用畫筆、畫刷8(2)選入畫筆:將該畫筆選入到設備環(huán)境中使用畫筆、畫刷9輸出文本

輸出文本(1)聲明字體對象

CFontNewFont;(2)創(chuàng)建字體CreateFont(intnheight,intnWidth,//高,寬

intnEscapement,//每行文字相以于頁底的角

intnOrienation,//每個…..DWORDnWeight,//字體粗細

DWORDdwltalic,//非零表示傾斜

DWORDdwUnderline,//非零表示下劃線

DWORDdwStrikeout,//非零表示中劃線

DWORDdwCharset,//字符集

DWORDdwOutputPrecision,//輸出精度

DWORDdwClipPrecision,//剪裁精度

DWORDdwQuality,//輸出質(zhì)量

DWORDdwPitchAndFamily,//字體系列

DWORDlpszFaceName//字體名稱};9輸出文本輸出文本(1)聲明字體對象10

NewFont.CreateFont()(3)將新字體選入設備環(huán)境

pDC->SelectObject()(4)用TextOut()輸出

輸出文本

輸出文本10NewFont.CreateFont()輸出文本11映射模式坐標系統(tǒng)可分為邏輯坐標、設備坐標.

窗口:邏輯坐標系上程序員設置的一個區(qū)域。

視口:實際輸出設備(物理設備坐標系)上程序員設定的一個區(qū)域。映像模式的設置

SetMapMode(hdc,nMapMode);//設置映像模式

nMapMode=GetMapMode(hdc);//得到映像模式

SetWindowExtEx(HDChdc,intnHeight,intnWidth,LPSIZElpSize)//設置窗口區(qū)域

SetViewportExtEx(HDChdc,intnHeight,intnWidth,LPSIZElpSize)//設置視口區(qū)域

SetWindowOrgEx(HDChdc,intx,inty,LPPOINTlpPOINT)//設置窗口原點

邏輯坐標、設備坐標11映射模式坐標系統(tǒng)可分為邏輯坐標、設備坐標.邏輯12程序員直接在一個統(tǒng)一的邏輯坐標系中進行圖形的繪制和操作,而不考慮輸出坐標系的情況。映像模式定義了將邏輯坐標轉(zhuǎn)為設備的度量單位以及設備的x、y方向。

映像模式將一個邏輯坐標映像為坐標系設定MM_ANISOTROPIC系統(tǒng)可選MM_ISOTROPIC系統(tǒng)確定可選MM_HIENGLISH0.001英寸x向右y向上MM_HIMETRIC0.01毫米x向右y向上MM_LOENGLISH0.01英寸x向右y向上MM_LOMETRIC0.1毫米x向右y向上MM_TEXT1個像素x向右y向下MM_TWIPS1/1440英寸x向右y向上映射模式

映射模式12程序員直接在一個統(tǒng)一的邏輯坐標系中進行圖形的繪制和操作,13顯示位圖從資源中加載位圖(1)聲明Cbitmap對象,并從資源中載入位圖

CBitmapbitmap;bitmap.LoadBitmap(IDB_BITMAP);(2)創(chuàng)建一個兼容的DCCDCdc;dc.CreateCompatibleDC(pDC);(3)將位圖選入兼容DCdc.SelectObject(&bitmap);(4)獲取位圖信息

BITMAPbmInfo;bitmap.GetObject(sizeof(bmInfo),&bmInfo);(5)使用BitBlt()顯示位圖

pDC->BitBlt();//該函數(shù)要用到位圖bmInfo信息

顯示位圖13顯示位圖從資源中加載位圖顯示位圖14BitBlt():按位圖原來的比例顯示位圖StretchBlt():可對位圖進行放大或壓縮從文件中加載位圖

CBitmapbitmap;HBITMAPhbitmap=(HBITMAP)LoadImage(NULL,“AAA”//位圖文件名

IMAGE_BITMAP//圖象類別

0,0,//寬度和高度

LR_LOADFROMFILE//從文件加載標志

)bitmap.Attach(hbitmap);顯示位圖

顯示位圖14BitBlt():按位圖原來的比例顯示位圖顯示位圖VC中MFC繪圖詳細教程課件16本章主要內(nèi)容設備環(huán)境GDI對象使用畫筆使用畫刷輸出文本映射模式顯示位圖1本章主要內(nèi)容設備環(huán)境17GDIGDI(GraphicsDeviceInterface)

(1)GDI和Windows設備驅(qū)動程序來支持設備無關性。(2)負責系統(tǒng)與用戶或繪圖程序之間的信息交換,并控制在輸出設備上顯示圖形或文字。(3)應用程序主窗口、菜單、對話框都由GDI繪制GDI2GDIGDI(GraphicsDeviceInterf18設備環(huán)境

設備環(huán)境設備環(huán)境(DeviceContext)(有譯為設備描述表、設備上下文)(1)是繪圖屬性(字體、顏色等)和方法(各種繪圖函數(shù))的集合(2)是一個用來確定或改變?nèi)魏卧O備的GDI輸出位置和形象的屬性集合CDC類CClientDCCWindowDCCPaintDCCMetaFileDC3設備環(huán)境設備環(huán)境設備環(huán)境(Device19(1)CWindowDC和CClientDCCPaintDC區(qū)別CWindowDC提供客戶區(qū)和非客戶區(qū)畫圖的設備環(huán)境;坐標原點在屏幕左上角CClientDCCPaintDC提供畫圖的設備環(huán)境;坐標原點在客戶區(qū)左上角(2)CClientDC和CPaintDC區(qū)別CPaintDC是響應WM_PAINT消息,用在OnPaint()函數(shù)中;只支持屏幕顯示CClientDC不響應WM_PAINT消息,只擔負此時的繪圖工作;支持屏幕顯示,也支持打印CDC常用函數(shù)(參見MSDN)設備環(huán)境

設備環(huán)境4(1)CWindowDC和CClientDCCPain20獲取設備環(huán)境(1)使用GetDC()函數(shù)

CDC*CWndGetDC()intReleaseDC(CDC*pDC)(2)直接構(gòu)造CDC對象用聲明一個CDC類或其派生類對象的方式來獲取設備環(huán)境

CClientDCdc(CWnd*)設備環(huán)境

設備環(huán)境5獲取設備環(huán)境設備環(huán)境設備環(huán)境21GDI對象提供更豐富的圖形操作函數(shù),設備環(huán)境類提供函數(shù)進行簡單的圖形繪制CGdiObjectCBitmapCBrushCPaletteCPenCRgnGDI對象GDI對象6GDI對象提供更豐富的圖形操作函數(shù),設備環(huán)境類提供函數(shù)進行22使用畫筆、畫刷

使用畫筆、畫刷(1)構(gòu)建畫筆、畫刷

CPen();CPen(intnPenStyle,intnWidth,COLORREFcrColor);

CPen(intnPenStyle,intnWidth,constLOGBRUSH*pLogBrush,intnStyleCount=0,constDWORD*lpStyle=NULL);

nPenStyle:參看課本P146nWidth:>1時,第一個參數(shù)中的PS_DASH(虛線)、PS_DOT(點線)、PS_DASHDOT(點劃線)、PS_DASHDOTDOT(雙點劃線)無效

crColor:RGB(255,255,255)顏色CBrush(COLORREFcrColor);

CBrush(intnIndex,COLORREFcrColor);

CBrush(CBitmap*pBitmap);crColor:RGB(255,255,255)顏色

nIndex:畫刷陰影線風格

pBitmap:位圖畫刷7使用畫筆、畫刷使用畫筆、畫刷(1)構(gòu)建畫筆、畫刷23(2)選入畫筆:將該畫筆選入到設備環(huán)境中

CPen*SelectObject(CPen*pPen)CBrush*SelectObject(CBrush*pBrush)virtualCFont*SelectObject(CFont*pFont)intSelectObject(CRgn*pRgn)(3)調(diào)用繪圖函數(shù)輸出使用畫筆、畫刷

使用畫筆、畫刷8(2)選入畫筆:將該畫筆選入到設備環(huán)境中使用畫筆、畫刷24輸出文本

輸出文本(1)聲明字體對象

CFontNewFont;(2)創(chuàng)建字體CreateFont(intnheight,intnWidth,//高,寬

intnEscapement,//每行文字相以于頁底的角

intnOrienation,//每個…..DWORDnWeight,//字體粗細

DWORDdwltalic,//非零表示傾斜

DWORDdwUnderline,//非零表示下劃線

DWORDdwStrikeout,//非零表示中劃線

DWORDdwCharset,//字符集

DWORDdwOutputPrecision,//輸出精度

DWORDdwClipPrecision,//剪裁精度

DWORDdwQuality,//輸出質(zhì)量

DWORDdwPitchAndFamily,//字體系列

DWORDlpszFaceName//字體名稱};9輸出文本輸出文本(1)聲明字體對象25

NewFont.CreateFont()(3)將新字體選入設備環(huán)境

pDC->SelectObject()(4)用TextOut()輸出

輸出文本

輸出文本10NewFont.CreateFont()輸出文本26映射模式坐標系統(tǒng)可分為邏輯坐標、設備坐標.

窗口:邏輯坐標系上程序員設置的一個區(qū)域。

視口:實際輸出設備(物理設備坐標系)上程序員設定的一個區(qū)域。映像模式的設置

SetMapMode(hdc,nMapMode);//設置映像模式

nMapMode=GetMapMode(hdc);//得到映像模式

SetWindowExtEx(HDChdc,intnHeight,intnWidth,LPSIZElpSize)//設置窗口區(qū)域

SetViewportExtEx(HDChdc,intnHeight,intnWidth,LPSIZElpSize)//設置視口區(qū)域

SetWindowOrgEx(HDChdc,intx,inty,LPPOINTlpPOINT)//設置窗口原點

邏輯坐標、設備坐標11映射模式坐標系統(tǒng)可分為邏輯坐標、設備坐標.邏輯27程序員直接在一個統(tǒng)一的邏輯坐標系中進行圖形的繪制和操作,而不考慮輸出坐標系的情況。映像模式定義了將邏輯坐標轉(zhuǎn)為設備的度量單位以及設備的x、y方向。

映像模式將一個邏輯坐標映像為坐標系設定MM_ANISOTROPIC系統(tǒng)可選MM_ISOTROPIC系統(tǒng)確定可選MM_HIENGLISH0.001英寸x向右y向上MM_HIMETRIC0.01毫米x向右y向上MM_LOENGLISH0.01英寸x向右y向上MM_LOMETRIC0.1毫米x向右y向上MM_TEXT

溫馨提示

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

評論

0/150

提交評論