今天準備重新對gdi的知識進行回顧一下,以便加深認識。
在進行windows程式設計時,可能經常會用到裝置描述表的型別控制代碼,例如,最廠家的hdc,它就是影象裝置描述型別控制代碼。因為gdi的繪圖函式基本上都是有狀態的,因此gdi所有的函式都要求乙個這樣的圖形裝置描述型別的控制代碼——hdc。而乙個影象裝置描述表實際上就是對一種安裝在機器上的圖形卡的描述。在使用控制代碼時,其實就是對具體的一種裝置進行操作。對於gdi的任何函式的呼叫,這個裝置的資訊是必
需的。
從本質上來說,提供指向任何gdi函式的hdc控制代碼,都是用來訪問乙個函式操作裝置的重要資訊。這就是需要乙個圖形描述表的原因。 。
cdc類就是mfc把dc(裝置描述環境)和一些gdi函式填充裝到一起的乙個集合。它是cobject的直接派生類。並且從cdc又派生出了許多其他類,如最常用的視窗客戶區dc所對應的cclientdc類,onpaint和ondraw訊息響應函式的輸入引數中使用的cpaintdc類,圖元檔案對應的cmetafiledc類和整個視窗所對應的cwindowdc類。cdc類中有許多成員函式,可以用來裝置各種繪圖環境、屬性和引數,以及繪製各種圖形和影象。
常見的函式如下:
(1)用於獲取dc控制代碼的函式getdc()
每次呼叫getdc函式所獲得的dc,都是乙個全新的臨時預設dc,具有預設的繪圖環境和設定。它不能用任何變數臨時儲存,而且getdc後原來選入的各種gdi物件全部作廢,原來設定的各種狀態也失效,一切都要從頭開始。
(2)用於獲取dc安全控制代碼的函式getsafehdc()
其獲得的dc在視窗的存在期間內一直是有效的。
(3)用於釋放dc的函式releasedc()
使用建構函式建立
cpen(
int npenstyle,
int nwidth,
colorref crcolor
用createpen函式建立畫筆物件
hpen createpen(int fnpenstyle, int nwidth, colorref crcolor);
用cetstockobject函式直接創建立畫筆
hgdiobj getstockobject ( int fnobject )
用createpenindirect函式建立
hpen createpenindirect( const logpen * logopen );
cbrush(
int fnstyle
coloref crcolor
hbrush createhatchbrush(int fnstyle, colorref crcolor);
getstockobject()
hbrush createbrushindirect(const logbrush *lplb);
typedef struct taglogbrush
uint lbstyle;
colorref lbcolor;
long lbhatch;
} logbrush
typedef sturct tagpoint
long x;
long y;
}point;
typedef struct tagsize
long cx;
long cy;
}size;
GDI程式設計基礎
視口是基於裝置的採用的是裝置座標 單位 畫素 視窗是基於程式的採用的是邏輯座標 單位 畫素 公釐 厘公尺等 在預設的對映模式下,視口是與視窗等同的。但是如果改變其對映模式,則其對應的單位則不相同。如果將對映模式改為mm loenglish或mm lometric等,則1個裝置座標並不對應乙個邏輯座標...
GDI 基礎程式設計(1)
首先是在我的vs2008裡面配置gdi 庫,以及初始化gdi lib,參見 然後進行一些比較基礎的gdi 畫筆 影象處理 詳細請見注釋 imageatt.setcolormatrix colormatrix,colormatrixflagsdefault,coloradjusttypebitmap ...
GDI 程式設計
image和bitmap類概述 gdi 的image類封裝了對bmp gif jpeg png tiff wmf windows元檔案 和emf 增強wmf 影象檔案的調入 格式轉換以及簡單處理的功能。而bitmap是從image類繼承的乙個影象類,它封裝了windows點陣圖操作的常用功能。例如,...