-
SetBkMode
鎖定
SetBkMode,Windows API,設置指定DC的背景混合模式,背景混合模式用於與文本,填充畫刷和當畫筆不是實線時。
- 中文名
- SetBkMode
- 外文名
- SetBkMode
- 聲明位置
- WinGDI.h
- 靜態庫
- Gdi32.lib
- 動態庫
- Gdi32.dll
SetBkMode函數功能
SetBkMode函數原型
//Windows API 中的函數原型 int SetBkMode( _In_ HDC hdc, _In_ int iBkMode ); //MFC 中封裝的函數原型 int CDC::SetBkMode(int mode);
SetBkMode參數
HDC hdc; //當前 DC ( device context ) 的句柄 int mode; //要設置的模式,其值可以為 OPAQUE 或 TRANSPARENT
SetBkMode返回值
SetBkMode實例
void OnPaint(HDC hdc) { int mode = SetBkMode(hdc, TRANSPARENT);//設置為透明模式 RECT rect = { 0, 0, 200, 50 }; //在矩形中心繪製文字 DrawText(hdc, _T("Hello World"), -1, &rect, DT_VCENTER | DT_CENTER | DT_SINGLELINE); SetBkMode(hdc, mode);//還原為之前的模式, 這裏不是必須的 }
SetBkMode説明
輸出的字符串時,發現輸出字符串的背景色不同於控件的顏色,這樣的輸出是破壞背景的。那需要使用什麼方法來保持背景不變,而又能輸出紅色的字符串呢?比如按鈕的文字顏色是黑色的,而背景是灰色的。這就需要使用SetBkMode函數來設置DrawText函數的輸出方式,顯示設備共有兩種輸出方式:OPAQUE和TRANSPARENT。OPAQUE的方式是用當前背景的畫刷的顏色輸出顯示文字的背景,而TRANSPARENT是使用透明的輸出,也就是文字的背景是不改變的。
對透明的理解:在窗體或控件輸出的字符串或圖形是有背景色的。而窗體或控件也是有背景色的。這兩種背景色一般是不同的, 這樣輸出圖形或字符串時,兩種背景(窗體或控件的背景色、符串或圖形的背景色)重疊在一起了,影響美觀,為了不讓這兩種背景重疊,可以設置背景模式為TRANSPARENT(透明的),即讓輸出的字符串或圖形的背景色不可見。可以這樣理解:把輸出的字符串或圖形的背景色看成是一物體,窗體或控件看成另一物體,字符串或圖形在窗體或控件前面擋住窗體或控件了(因為輸出 的字符串或圖形是畫在窗體或控件上的,所以可以這麼類比),但是透過字符串或圖形能看到窗體或控件。即字符串或圖形的背 景色所代表的物體是透明的。
SetBkMode相關函數
- 參考資料
-
- 1. SetBkMode function .MSDN[引用日期2016-08-03]