SetBkMode

SetBkMode

SetBkMode,Windows API,設定指定DC的背景混合模式,背景混合模式用於與文本,填充畫刷和當畫筆不是實線時。

基本介紹

  • 中文名:SetBkMode
  • 外文名:SetBkMode
  • 聲明位置:WinGDI.h
  • 靜態庫:Gdi32.lib
  • 動態庫:Gdi32.dll
基本概述,函式功能,函式原型,參數,返回值,實例,其他說明,相關函式,

基本概述

函式功能

設定指定DC的背景混合模式,背景混合模式用於與文本,填充畫刷和當畫筆不是實線時。

函式原型

//Windows API 中的函式原型int SetBkMode(  _In_ HDC hdc,  _In_ int iBkMode);//MFC 中封裝的函式原型int CDC::SetBkMode(int mode);

參數

HDC hdc; //當前 DC ( device context ) 的句柄int mode; //要設定的模式,其值可以為 OPAQUE 或 TRANSPARENT

返回值

如果函式運行成功,返回當前DC之前的背景模式;如果函式運行失敗,返回零。

實例

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函式來設定DrawText函式的輸出方式,顯示設備共有兩種輸出方式:OPAQUE和TRANSPARENT。OPAQUE的方式是用當前背景的畫刷的顏色輸出顯示文字的背景,而TRANSPARENT是使用透明的輸出,也就是文字的背景是不改變的。
對透明的理解:在窗體或控制項輸出的字元串或圖形是有背景色的。而窗體或控制項也是有背景色的。這兩種背景色一般是不同的, 這樣輸出圖形或字元串時,兩種背景(窗體或控制項的背景色、符串或圖形的背景色)重疊在一起了,影響美觀,為了不讓這兩種背景重疊,可以設定背景模式為TRANSPARENT(透明的),即讓輸出的字元串或圖形的背景色不可見。可以這樣理解:把輸出的字元串或圖形的背景色看成是一物體,窗體或控制項看成另一物體,字元串或圖形在窗體或控制項前面擋住窗體或控制項了(因為輸出 的字元串或圖形是畫在窗體或控制項上的,所以可以這么類比),但是透過字元串或圖形能看到窗體或控制項。即字元串或圖形的背 景色所代表的物體是透明的。

相關函式

相關詞條

熱門詞條

聯絡我們