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


Функция 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
Header wingdi.h (включая Windows.h)
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

Createpen

ExtCreatePen

GetBkMode

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

Общие сведения о рисовании и рисовании