共用方式為


setBkMode 函式 (wingdi.h)

SetBkMode函式會設定指定裝置內容的背景混合模式。 背景混合模式會與文字、影線筆刷和不是實線的畫筆樣式搭配使用。

語法

int SetBkMode(
  [in] HDC hdc,
  [in] int mode
);

參數

[in] hdc

裝置內容的控制碼。

[in] mode

背景模式。 此參數可以是下列其中一個值。

意義
不透明
在繪製文字、影線筆刷或畫筆之前,背景會填入目前的背景色彩。
透明
背景保持不變。

傳回值

如果函式成功,傳回值會指定先前的背景模式。

如果此函式失敗,則傳回值為零。

備註

SetBkMode函式會影響使用CreatePen函式所建立的畫筆所繪製線條的線條樣式。 SetBkMode 不會影響使用 ExtCreatePen 函式所建立的畫筆繪製的線條。

範例

若要查看如何讓影線筆刷的背景變成透明或不透明,請參閱 CreateHatchBrush 主題中顯示的範例。

下一個範例會繪製字串 36 次,每次旋轉 10 度逆時針。 它也會將背景模式設定為透明,讓文字可見。

#include "strsafe.h"
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;

    switch (message)
    {
    
    case WM_PAINT:
        {
        hdc = BeginPaint(hWnd, &ps);
        RECT rc; 
        int angle; 
        HGDIOBJ hfnt, hfntPrev; 
        WCHAR lpszRotate[22] = TEXT("String to be rotated.");
        HRESULT hr; 
        size_t pcch = 22;
 
// Allocate memory for a LOGFONT structure. 
 
PLOGFONT plf = (PLOGFONT) LocalAlloc(LPTR, sizeof(LOGFONT)); 
 
 
// Specify a font typeface name and weight. 
 
hr = StringCchCopy(plf->lfFaceName, 6, TEXT("Arial"));
if (FAILED(hr))
{
// TODO: write error handler
}

plf->lfWeight = FW_NORMAL; 
 
// Retrieve the client-rectangle dimensions. 
 
GetClientRect(hWnd, &rc); 
 
// Set the background mode to transparent for the 
// text-output operation. 
 
SetBkMode(hdc, TRANSPARENT); 
 
// Draw the string 36 times, rotating 10 degrees 
// counter-clockwise each time. 
 
for (angle = 0; angle < 3600; angle += 100) 
{ 
    plf->lfEscapement = angle; 
    hfnt = CreateFontIndirect(plf); 
    hfntPrev = SelectObject(hdc, hfnt);
    
    //
    // The StringCchLength call is fitted to the lpszRotate string
    //
    hr = StringCchLength(lpszRotate, 22, &pcch);
    if (FAILED(hr))
    {
    // TODO: write error handler
    } 
    TextOut(hdc, rc.right / 2, rc.bottom / 2, 
        lpszRotate, pcch); 
    SelectObject(hdc, hfntPrev); 
    DeleteObject(hfnt); 
} 
 
// Reset the background mode to its default. 
 
SetBkMode(hdc, OPAQUE); 
 
// Free the memory allocated for the LOGFONT structure. 
 
LocalFree((LOCALHANDLE) plf); 
        EndPaint(hWnd, &ps);
        break;
        }
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

規格需求

   
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 wingdi.h (包含 Windows.h)
程式庫 Gdi32.lib
Dll Gdi32.dll

另請參閱

CreatePen

ExtCreatePen

GetBkMode

繪製和繪圖函式

繪製和繪圖概觀