裝置上下文相關函式

2022-03-26 23:11:45 字數 4970 閱讀 3105

1.dc 裝置上下文(device context)

裝置上下文是一種包含有關某個裝置(如顯示器或印表機)的繪製屬性資訊的 windows 資料結構。所有繪製呼叫都通過裝置上下文物件進行,這些物件封裝了用於繪製線條、形狀和文字的 windows api。裝置上下文允許在 windows 中進行與裝置無關的繪製。裝置上下文可用於繪製到螢幕、印表機或者圖元檔案。

hdc是dc的控制代碼,api中的乙個類似指標的資料型別.

2.createcompatibledc

函式原型:hdc createcompatibledc(hdc hdc);

引數:hdc:現有裝置上下文環境的控制代碼,如果該控制代碼為null,該函式建立乙個與應用程式的當前顯示器相容的記憶體裝置上下文環境。

返回值:如果成功,則返回記憶體裝置上下文環境的控制代碼;如果失敗,則返回值為null。

createcompatibledc函式只適用於支援光柵操作的裝置,應用程式可以通過呼叫getdevicecaps函式來確定乙個裝置是否支援這些操作。

當不再需要記憶體裝置上下文環境時,可呼叫deletedc函式刪除它。

在視窗的dc之外,可以建立自己的dc,就是說它不對應視窗,這個方法就是createcompatibledc,這個dc就是乙個記憶體緩衝區,通過這個dc你可以把和它相容的視窗dc儲存到這個dc中,就是說你可以通過它在不同的dc之間拷貝資料。例如:你先在這個dc中建立好資料,然後在拷貝到視窗的dc就是完成了這個視窗的重新整理。

3.getobject

函式功能:該函式得到指定圖形物件的資訊,根據圖形物件,函式把填滿的或結構,或表項(用於邏輯調色盤)數目放入乙個指定的緩衝區。

函式原型:int getobject(hgdiobj hgdiobj, int cbbuffer, lpvoid lpvobject);

引數:hgdiobj:指向感興趣的圖形物件的控制代碼,它可以是這樣的乙個控制代碼:乙個邏輯位圖、乙個刷子、一種字型、乙個調色盤、筆或通過呼叫createdibsection函式建立的與裝置無關位圖。

cbbuffer:指定將要寫到緩衝區的資訊的位元組數目。

lpvobject:指向乙個緩衝區的指標,該緩衝區將要檢索指定圖形物件的資訊。

4.selectobject

函式功能:該函式選擇一物件到指定的裝置上下文環境中,該新物件替換先前的相同型別的物件。

函式原型:hgdiobj selectobject(hdc hdc, hgdiobj hgdiobj);

引數:hdc:裝置上下文環境的控制代碼。

hgdiobj:被選擇的物件的控制代碼,該指定物件必須由如下的函式建立。

5.stretchblt

函式功能:函式從源矩形中複製乙個點陣圖到目標矩形,必要時按目前目標裝置設定的模式進行影象的拉伸或壓縮。

函式原型:bool stretchblt(hdc hdcdest, int nxorigindest, int nyorigindest, int nwidthdest, int nheightdest, hdc hdcsrc, int nxoriginsrc, int nyoriginsrc, int nwidthsrc, int nheightsrc, dword dwrop);

引數:hdcdest:指向目標裝置環境的控制代碼

nxorigindest:指定目標矩形左上角的x軸座標,按邏輯單位表示座標。

nyorigindest:指定目標矩形左上角的y軸座標,按邏輯單位表示座標。

nwidthdest:指定目標矩形的寬度,按邏輯單位表示寬度。

nheightdest:指定目標矩形的高度,按邏輯單位表示高度。

hdcsrc:指向源裝置環境的控制代碼。

nxoriginsrc:指向源矩形區域左上角的x軸座標,按邏輯單位表示座標。

nyoriginsrc:指向源矩形區域左上角的y軸座標,按邏輯單位表示座標。

nwidthsrc:指定源矩形的寬度,按邏輯單位表示寬度

nheightsrc:指定源矩形的高度,按邏輯單位表示高度

dwrop:指定要進行的光柵操作。光柵操作碼定義了系統如何在輸出操作中組合顏色,這些操作包括刷子、源位圖和目標點陣圖等物件。參考bitblt可了解常用的光柵操作碼列表。

6.transparentblt

函式功能:該函式對指定的源裝置環境中的矩形區域畫素的顏色資料進行位塊(bit_block)轉換,並將結果置於目標裝置環境,此函式同樣具有縮放功能。

函式原型:bool transparentblt(hdc hdcdest, int nxorigindest, int nyorigindest, int nwidthdest, int hheightdest, hdc hdcsrc, int nxoriginsrc, int nyoriginsrc, int nwidthsrc, int nheightsrc, uint crtransparent);

引數:hdcdest:指向目標裝置環境的控制代碼。

nxorigindest:指定目標矩形左上角的x軸座標,座標以邏輯單位表示。

nyorigindest:指定目標矩形左上角的y軸座標,座標以邏輯單位表示。

nwidthdest:指定目標矩形的寬度。

nheightdest:指定目標矩形的高度。

hdcsrc:指向源裝置環境的控制代碼。

nxoriginsrc:指定源矩形(左上角)的x軸座標,座標以邏輯單位表示。

nyoriginsrc:指定源矩形(左上角)的y軸座標,座標以邏輯單位表示。

nwidthsrc:指定源矩形的寬度。

nheightsrc:指定源矩形的高度。

crtransparent:源位圖中的rgb值當作透明顏色。返回值:如果函式執行成功,那麼返回值為true;如果函式執行失敗,那麼返回值為false。

7.bitblt

函式功能:該函式對指定的源裝置環境區域中的畫素進行位塊(bit_block)轉換,以傳送到目標裝置環境,不具備縮放功能。

函式原型:bool bitblt(hdc hdcdest,int nxdest,int nydest,int nwidth,int nheight,hdc hdcsrc,int nxsrc,int nysrc,dword dwrop);

引數:hdcdest:指向目標裝置環境的控制代碼。   

nxdest:指定目標矩形區域左上角的x軸邏輯座標。   

nydest:指定目標矩形區域左上角的y軸邏輯座標。   

nwidth:指定源和目標矩形區域的邏輯寬度。   

nheight:指定源和目標矩形區域的邏輯高度。   

hdcsrc:指向源裝置環境的控制代碼。   

nxsrc:指定源矩形區域左上角的x軸邏輯座標。   

nysrc:指定源矩形區域左上角的y軸邏輯座標。   

dwrop:指定光柵操作**。這些**將定義源矩形區域的顏色資料,如何與目標矩形區域的顏色資料組合以完成最後的顏色。   

下面列出了一些常見的光柵操作**:   

blackness:表示使用與物理調色盤的索引0相關的色彩來填充目標矩形區域,(對預設的物理調色盤而言,該顏色為黑色)。   

dstinvert:表示使目標矩形區域顏色取反。   

mergecopy:表示使用布林型的and(與)操作符將源矩形區域的顏色與特定模式組合一起。   

mergepaint:通過使用布林型的or(或)操作符將反向的源矩形區域的顏色與目標矩形區域的顏色合併。   

notsrccopy:將源矩形區域顏色取反,於拷貝到目標矩形區域。   

notsrcerase:使用布林型別的or(或)操作符組合源和目標矩形區域的顏色值,然後將合成的顏色取反。   

patcopy:將特定的模式拷貝到目標點陣圖上。   

patpaint:通過使用布林or(或)操作符將源矩形區域取反後的顏色值與特定模式的顏色合併。然後使用or(或)操作符將該操作的結果與目標矩形區域內的顏色合併。   

patinvert:通過使用xor(異或)操作符將源和目標矩形區域內的顏色合併。   

srcand:通過使用and(與)操作符來將源和目標矩形區域內的顏色合併。   

srccopy:將源矩形區域直接拷貝到目標矩形區域。   

srcerase:通過使用and(與)操作符將目標矩形區域顏色取反後與源矩形區域的顏色值合併。   

srcinvert:通過使用布林型的xor(異或)操作符將源和目標矩形區域的顏色合併。   

srcpaint:通過使用布林型的or(或)操作符將源和目標矩形區域的顏色合併。   

whiteness:使用與物理調色盤中索引1有關的顏色填充目標矩形區域。(對於預設物理調色盤來說,這個顏色就是白色)。

載入點陣圖到表面**:

//

載入位圖

hbitmap hbitmap;

hbitmap = (hbitmap)loadimage(null, "

test.bmp

", image_bitmap, 0, 0

, lr_loadfromfile);

hdc hdcimage;

hdc hdc;

bitmap bm;

lpbackbuffer->restore();

hdcimage =createcompatibledc(null);

selectobject(hdcimage, hbitmap);

getobject(hbitmap,

sizeof(bm), &bm);

lpbackbuffer->getdc(&hdc);

bitblt(hdc,

0, 0, 800, 600, hdcimage, 0, 0

, srccopy);

lpbackbuffer->releasedc(hdc);

deletedc(hdcimage);

獲取裝置上下文

獲取裝置上下文有三種方法 beginpaint getdc getwindowdc。方法一 beginpaint和endpaint函式。beginpaint函式適用在wm paint訊息中。使用這種方法可以自動將無效區域設為有效。預設情況下,呼叫beginpaint函式時會自動將無效區域的背景擦出。...

裝置上下文類

請你多看看這張表,對裝置場景都有哪些屬性,腦子裡應當有個印象。事實上,裝置場景的很多屬性對應於vb中的form picturebox text等窗體或控制項的屬性。比如,字型 背景色 繪圖模式等等。可想而知,很多學vb的朋友儘管並不知道什麼叫裝置場景,但實質上都不知不覺地使用了裝置場景。可以說,裝置...

上下文 上下文棧

全域性 函式 區域性 在執行全域性 前將window確定為全域性執行上下文 對全域性資料進行預處理 var定義的全域性變數 undefined,新增為window的屬性 function宣告的全域性函式 賦值 fun 新增為window的方法 this 賦值 window 開始執行全域性 在呼叫函式...