SetBkMode, fonction (wingdi.h)
La fonction SetBkMode définit le mode de combinaison d’arrière-plan du contexte d’appareil spécifié. Le mode de combinaison d’arrière-plan est utilisé avec du texte, des pinceaux hachures et des styles de stylet qui ne sont pas des lignes pleines.
Syntaxe
int SetBkMode(
[in] HDC hdc,
[in] int mode
);
Paramètres
[in] hdc
Handle pour le contexte de l’appareil.
[in] mode
Mode d’arrière-plan. Ce paramètre peut prendre les valeurs suivantes.
Valeur retournée
Si la fonction réussit, la valeur de retour spécifie le mode d’arrière-plan précédent.
Si la fonction échoue, la valeur de retour est égale à zéro.
Remarques
La fonction SetBkMode affecte les styles de trait pour les lignes dessinées à l’aide d’un stylet créé par la fonction CreatePen . SetBkMode n’affecte pas les lignes dessinées à l’aide d’un stylet créé par la fonction ExtCreatePen .
Exemples
Pour savoir comment rendre transparent ou opaque l’arrière-plan d’un pinceau de hachure, reportez-vous à l’exemple présenté dans la rubrique CreateHatchBrush .
L’exemple suivant dessine une chaîne 36 fois, en la faisant pivoter de 10 degrés dans le sens inverse des aiguilles d’une montre à chaque fois. Il définit également le mode d’arrière-plan sur transparent pour rendre le texte visible.
#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;
}
Configuration requise
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | wingdi.h (inclure Windows.h) |
Bibliothèque | Gdi32.lib |
DLL | Gdi32.dll |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour