繪圖必看


1.全國大學1000多門20000多課時課程在線看 (必收藏)
http://www.365xueyuan.com/index-htm-m-bbs-cateid-73.htmlhtml

2. 數十G的photoshop教程在線看或下載
http://www.365xueyuan.com/thread-htm-fid-87.html編程

3.數十G ,word,excel辦公軟件教程在線看或下載
http://www.365xueyuan.com/數據結構

第4講 繪圖
Windows是一個圖形操做系統, Windows是一個圖形操做系統,其全部的圖形 是一個圖形操做系統 可視效果都是經過繪製操做而完成的。 繪製操做而完成的 可視效果都是經過繪製操做而完成的。 圖形顯示的實質就是利用Windows提供的圖形 圖形顯示的實質就是利用Windows提供的圖形 Windows提供的 設備接口將圖形繪製在顯示器上 將圖形繪製在顯示器 設備接口將圖形繪製在顯示器上。大多數應用 程序都須要在客戶區繪製一些圖形, 程序都須要在客戶區繪製一些圖形,如繪製文 幾何圖形、位圖和光標等。 本、幾何圖形、位圖和光標等。
GDI簡介 簡介
Windows提供了一個抽象的圖形界面接口, Windows提供了一個抽象的圖形界面接口,稱爲 提供了一個抽象的圖形界面接口 圖形設備接口( 圖形設備接口(Graphics Device Interface) , ) GDI。 或簡稱GDI 或簡稱GDI。 它負責管理用戶繪圖操做時功能的轉換。用戶 它負責管理用戶繪圖操做時功能的轉換。 經過調用GDI函數與設備打交道,GDI經過不一樣 GDI函數與設備打交道 經過調用GDI函數與設備打交道,GDI經過不一樣 設備提供的驅動程序將繪圖語句轉換爲對應的 繪圖指令,避免了直接對硬件進行操做,從而 繪圖指令,避免了直接對硬件進行操做, 實現設備無關性 設備無關性。 實現設備無關性。
Windows繪圖過程和設備無關性的實現: 繪圖過程和設備無關性的實現: 繪圖過程和設備無關性的實現
應用程序首先向設備環境提出輸出的請求, 應用程序首先向設備環境提出輸出的請求 , 設 備環境接收繪圖器請求(表現爲GDI函數調用),並 函數調用) 備環境接收繪圖器請求(表現爲 函數調用 將它們傳給相應的設備驅動程序, 將它們傳給相應的設備驅動程序 , 完成特定硬件的 輸出。 輸出。
爲了支持GDI繪圖,MFC提供了兩個類: 爲了支持GDI繪圖,MFC提供了兩個類: GDI繪圖 提供了兩個類
設備環境類(上下文類) 設備環境類(上下文類):用於設置繪圖屬性和 繪製圖形。 繪製圖形。 繪圖對象類:封裝了各類GDI繪圖對象,包括: GDI繪圖對象 繪圖對象類:封裝了各類GDI繪圖對象,包括: 畫筆、刷子、字體、位圖、調色板和區域。 畫筆、刷子、字體、位圖、調色板和區域。
設備環境
爲了實現設備無關性, 爲了實現設備無關性,應用程序的輸出不直 接面向顯示器等物理設備, 接面向顯示器等物理設備,而是面向一個稱 設備環境DC 之爲設備環境DC(Device Context)的虛擬邏 之爲設備環境DC(Device Context)的虛擬邏 輯設備。 輯設備。 設備環境也稱設備描述表或設備上下文,它 設備環境也稱設備描述表或設備上下文, 設備描述表 是由Windows管理的一個數據結構, Windows管理的一個數據結構 是由Windows管理的一個數據結構,它保存 了程序向設備輸出時所須要的信息,應用程 了程序向設備輸出時所須要的信息, 序利用它定義圖形對象及其屬性, 序利用它定義圖形對象及其屬性,並實現應 用程序、 用程序、設備驅動程序和輸出設備之間繪圖 命令的轉換。 命令的轉換。
設備環境
不一樣設備有不一樣的設備環境, Windows中 不一樣設備有不一樣的設備環境,在Windows中 不使用DC沒法進行輸出。在使用任何GDI DC沒法進行輸出 GDI繪 不使用DC沒法進行輸出。在使用任何GDI繪 圖函數以前,必須創建一個設備環境。 圖函數以前,必須創建一個設備環境。
MFC提供了不一樣類型的DC類 MFC提供了不一樣類型的DC類,每個類的構造函數 提供了不一樣類型的DC 自動調用獲取DC API函數 DC的 函數, 自動調用獲取DC的API函數,析構函數自動調用釋 放DC的API函數。所以,在程序中經過聲明一個MFC DC的API函數。所以,在程序中經過聲明一個MFC 函數 設備環境類的對象就自動獲取了一個DC DC, 設備環境類的對象就自動獲取了一個DC,而當該對 象被銷燬時就自動釋放了獲取的DC DC。 象被銷燬時就自動釋放了獲取的DC。MFC AppWizard應用程序嚮導建立的OnDraw()函數自動 應用程序嚮導建立的OnDraw() AppWizard應用程序嚮導建立的OnDraw()函數自動 支持所獲取的DC DC。 支持所獲取的DC。 MFC的DC類包括CDC、CPaintDC、CClientDC、 MFC的DC類包括CDC、CPaintDC、CClientDC、 類包括CDC CWindowDC和CMetaFileDC等 其中CDC類是MFC CDC類是MFC設備 CWindowDC和CMetaFileDC等,其中CDC類是MFC設備 環境類的基類,其它的MFC設備環境類都是CDC MFC設備環境類都是CDC的派 環境類的基類,其它的MFC設備環境類都是CDC的派 生類。 生類。
MFC設備環境類: MFC設備環境類: 設備環境類 CDC類既做爲其它MFC設備環境類的基類 類既做爲其它MFC設備環境類的基類, CDC類既做爲其它MFC設備環境類的基類,又能夠做爲 一個通常的設備環境類使用。 一個通常的設備環境類使用。利用它能夠訪問設備屬 性和設置繪圖屬性。CDC類對GDI的全部繪圖函數進行 類對GDI 性和設置繪圖屬性。CDC類對GDI的全部繪圖函數進行 了封裝。 了封裝。 CClientDC類表明了客戶區設備環境 類表明了客戶區 設備環境。 CClientDC 類表明了 客戶區 設備環境 。 當在客戶區實 時繪圖時,須要利用CClientDC CClientDC類定義一個客戶區設 時繪圖時 , 須要利用 CClientDC 類定義一個客戶區設 備環境。 備環境。 CPaintDC類用於響應WM_PAINT消息以支持重畫 類用於響應WM_PAINT消息以支持重畫。 CPaintDC類用於響應WM_PAINT消息以支持重畫。客戶 OnPaint()完成 區的重繪由函數OnPaint()完成。 區的重繪由函數 OnPaint() 完成 。 客戶區重繪也可以使 Invalidate()函數來完成 函數來完成。 用Invalidate()函數來完成。 bErase=TRUE TRUE) void Invalidate(BOOL bErase=TRUE) bErase爲TURE,背景被擦除。 若是 bErase爲TURE,背景被擦除。
繪圖對象類
CGdiObject是繪圖對象類的基類, CGdiObject是繪圖對象類的基類,但該類不 是繪圖對象類的基類 能爲應用程序直接使用,要使用GDI對象, GDI對象 能爲應用程序直接使用,要使用GDI對象,必 須使用它的派生類:畫筆、畫刷、字體、 須使用它的派生類:畫筆、畫刷、字體、位 圖、調色板、區域等。( CPen、CBrush、 調色板、區域等。 CPen、CBrush、 CFont、CBitmap、CPalette和CRgn) CFont、CBitmap、CPalette和CRgn)
在默認狀態下, 在默認狀態下,當用戶建立一個設備環境並在其 中繪圖時,系統使用設備環境缺省 缺省的繪圖工具及 中繪圖時,系統使用設備環境缺省的繪圖工具及 其屬性。若是要使用不一樣風格和顏色的繪圖工具 其屬性。 進行繪圖,用戶必須從新爲設備環境設置自定義 進行繪圖,用戶必須從新爲設備環境設置自定義 畫筆和畫刷等繪圖工具 等繪圖工具。 的畫筆和畫刷等繪圖工具。 畫筆和畫刷是Windows 中兩種最重要的繪圖工具 畫筆和畫刷是 Windows中兩種最重要的繪圖工具 , Windows 中兩種最重要的繪圖工具, 畫筆用於繪製對象的邊框以及直線和曲線,畫刷 畫筆用於繪製對象的邊框以及直線和曲線, 用於繪製對象的邊框以及直線和曲線 用指定的顏色和圖案來填充繪圖區域。 用指定的顏色和圖案來填充繪圖區域。
顏色的設置
Windows用COLORREF類型的數據存放顏色 類型的數據存放顏色, Windows用COLORREF類型的數據存放顏色,它是一 32位整數 任何一種顏色都是由紅、 位整數。 個 32 位整數 。 任何一種顏色都是由紅 、 綠 、 藍三 種基本顏色組成,COLORREF類型數據的第 類型數據的第1 種基本顏色組成,COLORREF類型數據的第1位字節 存放紅色強度值, 紅色強度值 個字節存放綠色強度值, 綠色強度值 存放紅色強度值,第2個字節存放綠色強度值,第 藍色強度值 個字節存放藍色 強度值, 高位字節爲0 3 個字節存放 藍色 強度值 , 高位字節爲 0 , 每一種 顏色份量的取值範圍爲0 255。 顏色份量的取值範圍爲0到255。 直接設置COLORREF數據不太方便,Windows提供了 COLORREF數據不太方便 直接設置COLORREF數據不太方便,Windows提供了 RGB宏用於設置顏色,將其中的紅、綠、藍份量值 宏用於設置顏色,將其中的紅、 轉換爲COLORREF類型的顏色數據: COLORREF類型的顏色數據 轉換爲COLORREF類型的顏色數據: RGB(cRed, cGreen, cBlue) 其中參數cRed cGreen和cBlue分別表示紅 cRed、 分別表示紅、 其中參數cRed、cGreen和cBlue分別表示紅、 藍份量值(範圍0 255) 綠、藍份量值(範圍0到255)。
RGB宏的使用: 宏的使用: 宏的使用 不少涉及到顏色的GDI 函數都須要使用COLORREF GDI函數都須要使用 不少涉及到顏色的 GDI 函數都須要使用 COLORREF 類型的參數,如設置背景色的成員函數 CDC::SetBkColor() , 設 置 文 本 顏 色 的 成 員 函 數 CDC::SetTextColor()。例如: 。例如: COLORREF rgbBkClr=RGB(192,192,192); // 定義灰色 pDC->SetBkCorlor(rgbBkClr); // 背景色爲灰色 pDC->SetTextColor(RGB(0,0,255)); // 文本顏色爲藍色
標準彩色的RGB值 值 標準彩色的
顏色 淺紅 淺綠 淺藍 淺黃 淺青 紫色 白色 RGB份量值 RGB份量值 255, 255,0,0 0,255,0 255, 0,0,255 255,255, 255,255,0 0,255,255 255, 255, 255,0,255 255,255, 255,255,255 顏色 深紅 深綠 深藍 深黃 深青 灰色 黑色 RGB份量值 RGB份量值 128, 128,0,0 0,128,0 128, 0,0,128 128,128, 128,128,0 0,128,128 128, 192,192, 192,192,192 0,0,0
選擇一個GDI對象: 對象: 選擇一個 對象 要使用建立的對象, 要使用建立的對象 , 首先應將它選入到設備上下 調用CDC::SelectObject() 能夠 選擇 用戶已定製好 能夠選擇 選擇用戶已定製好 文 。 調用 的畫筆、畫刷、字體和位圖等不一樣類型的GDI對象 不一樣類型的GDI對象。 的畫筆、畫刷、字體和位圖等不一樣類型的GDI對象。 CPen* SelectObject(CPen* pPen); CBrush* SelectObject(CBrush* pBrush); CFont* SelectObject(CFont* pFont); CBitmap* SelectObject(CBitmap* pBitmap); 函數參數是一個指向用戶已定製好的GDI對象的指 函數參數是一個指向用戶已定製好的GDI對象的指 GDI 選擇操做成功函數將返回之前GDI對象的指針 之前GDI對象的指針, 針,選擇操做成功函數將返回之前GDI對象的指針,否 則返回NULL NULL。 則返回NULL。
使用畫筆
默認畫筆爲一個像素單位寬度、 默認畫筆爲一個像素單位寬度、風格爲實黑線 BLACK_PEN)的畫筆。 (BLACK_PEN)的畫筆。 若是要在設備環境使用本身的畫筆繪圖, 若是要在設備環境使用本身的畫筆繪圖,首先 須要建立一個指定風格的畫筆,而後將建立的畫筆 須要建立一個指定風格的畫筆,而後將建立的畫筆 選入設備環境,最後, 選入設備環境,最後,在使用該畫筆繪圖結束後需 要釋放該畫筆。 要釋放該畫筆。 1. 建立畫筆 建立畫筆最簡單的方法是調用CPen類的一個帶 建立畫筆最簡單的方法是調用CPen類的一個帶 CPen 參數的構造函數來構造一個CPen類畫筆對象,如下 參數的構造函數來構造一個CPen類畫筆對象, CPen類畫筆對象 代碼建立了一個紅色虛線畫筆: 代碼建立了一個紅色虛線畫筆: RGB(255 255, )); CPen NewPen (PS_DASH, 1, RGB(255, 0, 0));
建立畫筆的第二種方法是首先構造一個沒有初始 化 的 CPen 類 畫 筆 對 象 , 然 後 調 用 成 員 函 數 CPen::CreatePen()建立定製的畫筆工具: 建立定製的畫筆工具: 建立定製的畫筆工具 CPen NewPen; //定義一個畫筆 //定義一個畫筆 NewPen.CreatePen(PS_DASH, 1,RGB(255,0,0)); 255, )); (PS_DASH, ,RGB(255 函數CreatePen()的參數類型與帶參數的CPen 類構 的參數類型與帶參數的CPen 函數 的參數類型與帶參數的 CPen類構 造函數徹底同樣。 造函數徹底同樣。當畫筆對象的聲明與建立不在同一個 地方時(如須要屢次改變畫筆)只有採用這種方法。 地方時(如須要屢次改變畫筆)只有採用這種方法。
畫筆樣式 線寬
CPen::CreatePen(int CPen::CreatePen(int nPenStyle,int nWidth, :: DWORD crClor)
線的顏色
畫 筆










PS_SOLID PS_DOT PS_DASH PS_DASHDOT
實線 點線 虛線 點劃線
PS_DASHDOTDOT PS_NULL PS_INSIDEFRAME
雙點劃線 空的邊框 邊框實線
2. 選擇建立的畫筆 創 建 畫 筆 後 必 須 調 用 成 員 函 數 CDC:: SelectObject()將建立的畫筆選入當前設備環 將建立的畫筆選入當前設備環 若是選擇成功,函數SelectObject()將返 境 。 若是選擇成功 , 函數 將返 之前畫筆對象的指針 畫筆對象的指針。 回之前畫筆對象的指針。選擇新的畫筆時應該 保存之前的畫筆對象,以下代碼所示: 保存之前的畫筆對象,以下代碼所示: CPen* pOldPen; CPen NewPen;
NewPen.CreatePen(PS_DASH,1,RGB(255,0,0));
pOldPen=pDC->SelectObject(&NewPen);
3. 還原畫筆
建立和選擇畫筆工具後, 建立和選擇畫筆工具後,應用程序就可使用 該畫筆繪圖。當繪圖完成後, 該畫筆繪圖 。 當繪圖完成後 , 應該經過調用成員函 數 CDC::SelectObject()恢復設備環境之前的畫筆 恢復設備環境之前的畫筆 工 具 , 並 通 過 調 用 成 員 函 數 CGdiObject::DeleteObject()釋放GDI對象所佔的內 釋放GDI 釋放GDI對象所佔的內 存資源,以下代碼所示: 存資源,以下代碼所示: dc.SelectObject(pOldPen); // 恢復設備環境 中原來的畫筆 恢復設備環境DC中原來的畫筆 NewPen.DeleteObject(); // 刪除底層的 刪除底層的GDI對象 對象
使用畫刷
當建立一個設備環境時, 當建立一個設備環境時 , 該設備環境自動提供了 一個填充色爲白色(WHITE_BRUSH)的缺省畫刷。 一個填充色爲白色(WHITE_BRUSH)的缺省畫刷。 與畫筆同樣,也能夠利用MFC畫刷類CBrush建立 MFC畫刷類 與畫筆同樣 , 也能夠利用 MFC 畫刷類 建立 本身的畫刷,用於填充圖形的繪製。 本身的畫刷,用於填充圖形的繪製。 畫刷有三種基本類型:純色畫刷、陰影畫刷和 畫刷有三種基本類型 : 純色畫刷 、 陰影畫刷 和 圖 案畫刷, CBrush類提供了多個不一樣重載形式的構 案畫刷 , CBrush 類提供了多個不一樣重載形式的構 造函數。如下建立三種不一樣類型的畫刷: 造函數。如下建立三種不一樣類型的畫刷: brush1(RGB(255 255, )); CBrush brush1(RGB(255,0,0)); // 建立純色畫刷 CBrush brush2 RGB(0 255, )); brush2(HS_DIAGCROSS, RGB(0,255,0));
// 建立陰影畫刷 // 建立圖案畫刷
brush3(&bmp); CBrush brush3(&bmp);
建立畫刷也能夠先構造一個沒有初始化的CBrush類畫刷 建立畫刷也能夠先構造一個沒有初始化的CBrush類畫刷 也能夠先構造一個沒有初始化的CBrush 對象,而後調用CBrush CBrush類的初始化成員函數建立定製的 對象,而後調用CBrush類的初始化成員函數建立定製的 畫刷工具。CBrush類提供的經常使用建立函數有 類提供的經常使用建立函數有: 畫刷工具。CBrush類提供的經常使用建立函數有:
BOOL CreateSolidBrush(COLOREF crColor) 用指定的顏色建立一個純色畫刷; 用指定的顏色建立一個純色畫刷; 純色畫刷 CreatePatternBrush() 用位圖建立一個圖案畫刷; 用位圖建立一個圖案畫刷;其參數爲指向對象的指針 圖案畫刷 CreateHatchBrush(int nIndex,COLORREF crColor) 用指定的陰影樣式(nIndex)和顏色建立一個陰影畫刷; 和顏色建立一個陰影畫刷; 用指定的陰影樣式 和顏色建立一個陰影畫刷 CBrush BrushNew; BrushNew.CreateHatchBrush(HS_CROSS,RGB(255, 0, 0)); //建立了一個填充色爲紅色、 //建立了一個填充色爲紅色、圖案爲水平和垂直相交陰影線的畫刷 建立了一個填充色爲紅色
陰影樣式(nIndex) 陰影樣式


HS_BDIAGONAL HS_FDIAGONAL HS_DIAGCROSS HS_CROSS HS_HORIZONTAL HS_VERTICAL
從左下角到右上角的45° 從左下角到右上角的45°陰影線 45 從左上角到右下角的45° 從左上角到右下角的45°陰影線 45 十字交叉的45°陰影線 十字交叉的45° 45 水平和垂直交叉的陰影線 水平陰影線 垂直陰影線
使用GDI堆對象 使用GDI堆對象 GDI
Windows預約義了一些簡單風格的GDI對象,用戶使 預約義了一些簡單風格的GDI對象, 預約義了一些簡單風格的GDI對象 用這些GDI對象時,無需本身建立它們, GDI對象時 用這些GDI對象時,無需本身建立它們,能夠直接將 它們選入當前的設備環境,這些GDI對象稱做爲堆 GDI對象稱做爲 它們選入當前的設備環境,這些GDI對象稱做爲堆 Stock)對象(也叫庫存對象) 堆對象包括堆畫筆 堆畫筆、 (Stock)對象(也叫庫存對象)。堆對象包括堆畫筆、 堆畫刷和堆字體等 堆畫刷和堆字體等。 經過調用成員函數CDC::SelectStockObject()能夠 經過調用成員函數CDC::SelectStockObject()能夠 選擇一個堆對象繪圖工具。 選擇一個堆對象繪圖工具。
pPenOld=(CPen*) dc.SelectStockObject(NULL_PEN); // 使用堆畫筆對象 庫存畫筆對象) 使用堆畫筆對象(庫存畫筆對象 庫存畫筆對象) pBrhOld=(CBrush*) dc.SelectStockObject (LTGRAY_BRUSH); // 使用堆畫刷對象
堆畫筆、 堆畫筆、畫刷的樣式及說明
樣 式 說 明 樣 式 說 明
BLACK_PEN NULL_PEN WHITE_BRUSH GRAY_BRUSH LTGRAY_BRUSH
黑色畫筆 空畫筆 白色畫刷 灰色畫刷
淺灰色畫刷
WHITE_PEN BLACK_BRUSH NULL_BRUSH DKGRAY_BRUSH HOLLOW_BRUSH
白色畫筆 黑色畫刷 空畫刷
深灰色畫刷
虛畫刷
繪製基本圖形
生成設備環境、 生成設備環境 、 設置繪圖屬性和選擇繪圖工具 就能夠開始繪製不一樣形狀的幾何圖形, 後 , 就能夠開始繪製不一樣形狀的幾何圖形 , Windows中能夠繪製的基本幾何圖形包括點 中能夠繪製的基本幾何圖形包括點、 Windows 中能夠繪製的基本幾何圖形包括點 、 直線、曲線、矩形、橢圓、 扇形、 直線 、 曲線、 矩形 、橢圓、 弧、 扇形 、弦形和 多邊形等。 多邊形等。 GDI爲提供了繪製基本圖形的 成員函數 GDI 爲提供了繪製基本圖形的成員函數 , 這些 爲提供了繪製基本圖形的 成員函數, 函數封裝在MFC CDC類中 MFC的 類中。 函數封裝在MFC的CDC類中。 繪圖函數使用的座標都是邏輯座標。 繪圖函數使用的座標都是邏輯座標。
函 MoveTo LineTo

功 用指定的顏色在指定的座標處畫一個點

SetPixel
移動當前位置到指定的座標,函數返回之前位置的座標。 移動當前位置到指定的座標,函數返回之前位置的座標。 從當前位置到指定位置畫一條直線 從當前位置開始,根據函數參數繪製多條折線。 從當前位置開始,根據函數參數繪製多條折線。 根據兩個端點和兩個控制點繪製貝濟埃(Bezier)曲線。 根據兩個端點和兩個控制點繪製貝濟埃(Bezier)曲線。 根據指定的左上角和右下角座標繪製一個矩形 繪製一個圓角矩形。 繪製一個圓角矩形。 根據指定的矩形繪製一個內切橢圓 根據指定的矩形繪製內切橢圓上的一段弧邊 該函數功能與Arc函數類似 該函數功能與Arc函數類似 Arc 繪製扇形 繪製弦形,弦形是一條橢圓弧和其對應的弦所組成的封閉圖形。 繪製弦形,弦形是一條橢圓弧和其對應的弦所組成的封閉圖形。 根據兩個或兩個以上頂點繪製一個多邊形 在指定位置畫一個圖標,若是成功函數返回非0 不然返回0 在指定位置畫一個圖標,若是成功函數返回非0,不然返回0。
Polyline PolyBezier Rectangle RoundRect Ellipse Arc ArcTo Pie Chord Polygon DrawIcon
繪製文本
圖形方式進行文本的輸出是Windows操做系統一個 以圖形方式進行文本的輸出是Windows操做系統一個 特性, 特性 , 文本輸出其實是按照指定的字體樣式將文 本中的每一個字符繪製出來。 本中的每一個字符繪製出來。 Windows圖形設備接口 GDI Windows 圖形設備接口GDI 提供了不少有關文本輸出 圖形設備接口 GDI提供了不少有關文本輸出 的函數,MFC的CDC類對這些GDI文本輸出函數進行了 類對這些GDI 的函數,MFC的CDC類對這些GDI文本輸出函數進行了 封裝。 封裝。 編程時最經常使用的文本輸出函數是TextOut()函數,該 函數, 編程時最經常使用的文本輸出函數是 函數 函數只能輸出單行文本。 函數只能輸出單行文本 。 要繪製多行文本能夠調用 DrawText()函數。 函數。 函數
在缺省狀況下繪製文本時,字體顏色是黑色, 在缺省狀況下繪製文本時,字體顏色是黑色, 背景顏色是白色,背景模式爲不透明模式。 背景顏色是白色,背景模式爲不透明模式。能夠通 過調用CDC類成員函數從新設置字體顏色、 CDC類成員函數從新設置字體顏色 過調用CDC類成員函數從新設置字體顏色、背景顏色 和文本對齊方式等文本屬性。 和文本對齊方式等文本屬性。
SetTextColor() GetTextColor SetBkColor() GetBkColor() SetBkMode() GetBkMode() SetTextAlign() GetTextAlign() 設置顯示文本的顏色 得到當前文本的顏色 設置顯示文本的背景顏色 得到當前文本的背景顏色 設置文本的背景模式 得到當前文本的背景模式 設置顯示文本的對齊方式 得到當前文本的對齊方式
例:對話框中繪圖(Draw1) 對話框中繪圖( )
創建基於對話框的應用程序 中添加一個Bitmap(new或 在ResourceView中添加一個 中添加一個 ( 或 import)。 )。 ()函數中添加繪圖操做代碼 在OnPaint()函數中添加繪圖操做代碼。 ()函數中添加繪圖操做代碼。
()函數中添加以下代碼 在OnPaint()函數中添加以下代碼: ()函數中添加以下代碼: COLORREF rgbBkClr=RGB(192,192,192); // 灰色 CClientDC dc(this); dc.SetBkColor(rgbBkClr); dc.SetTextColor(RGB(0,0,255)); dc.TextOut(0,0,"Hello world");
//CPen NewPen (PS_DASH, 1, RGB(255, 0, 0)); CPen NewPen; //定義一個畫筆 定義一個畫筆
NewPen.CreatePen(PS_DASH, 3,RGB(255,255,0));
dc.SelectObject(&NewPen); dc.MoveTo(30,60); dc.LineTo(50,100);
CBrush brush1(RGB(255,0,0)); // 建立純色畫刷
CBrush brush2(HS_DIAGCROSS, RGB(0,255,0));
// 建立陰影畫刷
CBitmap bmp; CBrush BrushNew;
BrushNew.CreateHatchBrush(HS_CROSS, RGB(255, 0, 0)); // 建立陰影畫刷
bmp.LoadBitmap(IDB_BITMAP1); CBrush brush3(&bmp); // 建立圖案畫刷 //dc.SelectObject(&brush1);
dc.SelectObject(&brush3); dc.Rectangle(100,100,300,300); dc.SelectObject(&brush2); dc.Ellipse(300,300,200,200); dc.SelectObject(&BrushNew); dc.RoundRect(100,20,250,90,30,30);
例:對話框中繪圖(Draw2) 對話框中繪圖( )
CPen *PenOld,PenNew; int PenStyle[]={PS_SOLID,PS_DOT,PS_DASH}; char *strStyle[]={"實線 點線 虛線 實線","點線 虛線"}; 實線 點線","虛線 char *strWidth[]={"1","2","3"}; char *strColor[]={"紅","綠","藍"}; 紅 綠 藍 char *p; int x,y,t,width=1;
COLORREF rgbPenClr[]={RGB(255,0,0),RGB(0,255,0),RGB(0,0,255)}; COLORREF PenColor=RGB(0,0,0);
CClientDC dc(this); dc.TextOut(60,10,"用不一樣樣式的畫筆繪圖 用不一樣樣式的畫筆繪圖"); 用不一樣樣式的畫筆繪圖 dc.TextOut(260,10,"用不一樣寬度的畫筆繪圖 用不一樣寬度的畫筆繪圖"); 用不一樣寬度的畫筆繪圖 dc.TextOut(460,10,"用不一樣顏色的畫筆繪圖 用不一樣顏色的畫筆繪圖"); 用不一樣顏色的畫筆繪圖
for(int i=0;i<3;i++) { for(int j=0;j<3;j++) {x=2*i+1; if(i==0) {y=j; t=1;p=strStyle[ j ];} else if(i==1) {y=0;t=26;width=j+1;p=strWidth[ j ];} else {y=j;t=46;PenColor=rgbPenClr[j];p=strColor[ j ];} PenNew.CreatePen(PenStyle[y],width,PenColor); PenOld=dc.SelectObject(&PenNew); dc.TextOut(10*t,35+52*j,p); dc.Rectangle(100*x,40+50*j,100*(x+1),60+50*j); dc.SelectObject(PenOld);//還原畫筆 還原畫筆 PenNew.DeleteObject();//釋放畫筆 釋放畫筆 } } }
j=0
j=1
j=2 i=1 i=2
i=0函數

1工具

相關文章
相關標籤/搜索