SelectObject

SelectObject

SelectObject,計算機程式語言函式,該函式選擇一對象到指定的設備上下文環境中,該新對象替換先前的相同類型的對象。

介紹

CPen* SelectObject( CPen* pPen );

CBrush* SelectObject( CBrush* pBrush );

virtual CFont* SelectObject( CFont* pFont );

CBitmap* SelectObject( CBitmap* pBitmap );

int SelectObject( CRgn* pRgn );

CGdiObject* SelectObject( CGdiObject* pObject );

函式功能:該函式選擇一對象到指定的設備上下文環境中,該新對象替換先前的相同類型的對象。

函式原型:HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj)

參數:

hdc:設備上下文環境的句柄。

hgdiobj:被選擇的對象的句柄,該指定對象必須由如下的函式創建。

點陣圖:CreateBitmap, CreateBitmapIndirect, CreateCompatible Bitmap, CreateDIBitmap, CreateDIBsection(只有記憶體設備上下文環境可選擇點陣圖,並且在同一時刻只能一個設備上下文環境選擇點陣圖)。

畫刷:CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush。

字型:CreateFont, CreateFontIndirect。

筆:CreatePen, CreatePenIndirect。

區域:CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect。

返回值:如果選擇對象不是區域並且函式執行成功,那么返回值是被取代的對象的句柄;如果選擇對象是區域並且函式執行成功,返回如下一值:

SIMPLEREGION:區域由單個矩形組成;

COMPLEXREGION:區域由多個矩形組成;

NULLREGION:區域為空。

如果發生錯誤並且選擇對象不是一個區域,那么返回值為NULL,否則返回HGDI_ERROR。

注釋:該函式返回先前指定類型的選擇對象,一個應用程式在它使用新對象進行繪製完成之後,應該用原始的預設的對象替換新對象。

應用程式不能同時選擇一個點陣圖到多個設備上下文環境中。

ICM:如果被選擇的對象是畫筆或筆,那么就執行顏色管理。

速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;頭檔案:wingdi.h;庫檔案:gdi32.lib。

示例

HDC hdc=GetDC(hwnd);

HDC memdc=CreateCompatibleDC(hdc);

RECT rc;

BITMAP bmp;

HBITMAP holdbmp,hbmp=LoadBitmap(hInstDVBRes,MAKEINTRESOURCE(IDB_CLOCK));//從資源載入點陣圖

holdbmp=(HBITMAP)SelectObject(memdc,hbmp);//這裡把hbmp的點陣圖選擇到兼容DC memdc,之後這個兼容DC就擁有和

//hbmp同樣大小的繪圖區域,注意超出點陣圖返回的GDI輸出都是無效的.

GetObject(hbmp,sizeof(BITMAP),&bmp);//這裡獲取點陣圖的大小信息,事實上也是兼容DC繪圖輸出的範圍

SetRect(&rc,0,0,bmp.bmWidth,bmp.bmHeight);

DrawText(memdc,"Center Line Text" -1,&rc,DT_VCENTER|DT_SINGLELINE|DT_CENTER);//在兼容DC中間位置輸出字元串

//這樣以來我們就相當於把hbmp這個點陣圖加上了文字標註,我們可以把這個增加了文字標註的點陣圖保存起來.一個簡單的圖像處理基本就OK了.

SelectObject(memdc,holdbmp);//復原兼容DC數據.

DeleteDC(memdc);

相關搜尋

熱門詞條

聯絡我們