Função SetBkMode (wingdi.h)

A função SetBkMode define o modo de combinação em segundo plano do contexto do dispositivo especificado. O modo de combinação de plano de fundo é usado com texto, pincéis e estilos de caneta que não são linhas sólidas.

Sintaxe

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

Parâmetros

[in] hdc

Um identificador para o contexto do dispositivo.

[in] mode

O modo de tela de fundo. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
OPACO
A tela de fundo é preenchida com a cor da tela de fundo atual antes que o texto, o pincel ou a caneta sejam desenhados.
TRANSPARENTE
O plano de fundo permanece intocado.

Valor retornado

Se a função for bem-sucedida, o valor retornado especificará o modo anterior em segundo plano.

Se a função falhar, o valor retornado será zero.

Comentários

A função SetBkMode afeta os estilos de linha para linhas desenhadas usando uma caneta criada pela função CreatePen . SetBkMode não afeta linhas desenhadas usando uma caneta criada pela função ExtCreatePen .

Exemplos

Para ver como tornar a tela de fundo de um pincel de hachura transparente ou opaca, consulte o exemplo mostrado no tópico CreateHatchBrush .

O exemplo a seguir desenha uma cadeia de caracteres 36 vezes, girando-a 10 graus no sentido anti-horário a cada vez. Ele também define o modo de tela de fundo como transparente para tornar o texto visível.

#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;
}

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wingdi.h (inclua Windows.h)
Biblioteca Gdi32.lib
DLL Gdi32.dll

Confira também

Createpen

ExtCreatePen

GetBkMode

Funções de pintura e desenho

Visão geral de pintura e desenho