Поделиться через


Функция SetBkMode (wingdi.h)

Функция SetBkMode задает режим фонового смешивания указанного контекста устройства. Фоновый режим смешивания используется с текстом, хэтчированные кисти и стили пера, которые не являются твердыми линиями.

Синтаксис

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

Параметры

[in] hdc

Дескриптор контекста устройства.

[in] mode

Фоновый режим. Этот параметр может быть одним из следующих значений.

Ценность Значение
OPAQUE Фон заполняется текущим цветом фона перед текстом, штриховкой кистью или пером.
TRANSPARENT Фон не влияет.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение указывает предыдущий фоновый режим.

Если функция завершается ошибкой, возвращаемое значение равно нулю.

Замечания

Функция 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 [только классические приложения]
целевая платформа Виндоус
Заголовок wingdi.h (включая Windows.h)
Библиотека Gdi32.lib
Библиотека dll Gdi32.dll

См. также

CreatePen

ExtCreatePen

GetBkMode

функции рисования и рисования

Обзор рисования и рисования