Partager via


La classe CBrush

Encapsule un pinceau GDI (Graphics Device Interface) Windows.

Syntaxe

class CBrush : public CGdiObject

Membres

Constructeurs publics

Nom Description
CBrush::CBrush Construit un objet CBrush.

Méthodes publiques

Nom Description
CBrush::CreateBrushIndirect Initialise un pinceau avec le style, la couleur et le modèle spécifiés dans une LOGBRUSH structure.
CBrush::CreateDIBPatternBrush Initialise un pinceau avec un modèle spécifié par une bitmap indépendante de l’appareil (DIB).
CBrush::CreateHatchBrush Initialise un pinceau avec le motif et la couleur hachures spécifiés.
CBrush::CreatePatternBrush Initialise un pinceau avec un modèle spécifié par une bitmap.
CBrush::CreateSolidBrush Initialise un pinceau avec la couleur unie spécifiée.
CBrush::CreateSysColorBrush Crée un pinceau qui est la couleur système par défaut.
CBrush::FromHandle Retourne un pointeur vers un CBrush objet lorsqu’un handle est donné à un objet Windows HBRUSH .
CBrush::GetLogBrush Obtient une LOGBRUSH structure.

Opérateurs publics

Nom Description
CBrush::operator HBRUSH Retourne le handle Windows attaché à l’objet CBrush .

Notes

Pour utiliser un objet, construisez un CBrush CBrush objet et passez-le à n’importe quelle CDC fonction membre qui nécessite un pinceau.

Les pinceaux peuvent être solides, hachés ou motifs.

Pour plus d’informations sur CBrush, consultez Objets graphiques.

Hiérarchie d'héritage

CObject

CGdiObject

CBrush

Spécifications

En-tête : afxwin.h

CBrush::CBrush

Construit un objet CBrush.

CBrush();
CBrush(COLORREF crColor);
CBrush(int nIndex, COLORREF crColor);
explicit CBrush(CBitmap* pBitmap);

Paramètres

crColor
Spécifie la couleur de premier plan du pinceau sous forme de couleur RVB. Si le pinceau est haché, ce paramètre spécifie la couleur du hachage.

nIndex
Spécifie le style de hachure du pinceau. Il peut s’agir de l’une des valeurs suivantes :

  • HS_BDIAGONAL Hachure vers le bas (gauche à droite) à 45 degrés

  • HS_CROSS Crosshatch horizontal et vertical

  • HS_DIAGCROSS Hachage croisé à 45 degrés

  • HS_FDIAGONAL Hache vers le haut (gauche à droite) à 45 degrés

  • HS_HORIZONTAL Hachure horizontale

  • HS_VERTICAL Hachure verticale

pBitmap
Pointe vers un CBitmap objet qui spécifie une bitmap avec laquelle le pinceau se peint.

Notes

CBrush a quatre constructeurs surchargés. Le constructeur sans arguments construit un objet non initialisé CBrush qui doit être initialisé avant de pouvoir être utilisé.

Si vous utilisez le constructeur sans argument, vous devez initialiser l’objet résultant CBrush avec , , CreateHatchBrush, CreateBrushIndirectCreatePatternBrush, ou CreateDIBPatternBrushCreateSolidBrush. Si vous utilisez l’un des constructeurs qui acceptent des arguments, aucune initialisation supplémentaire n’est nécessaire. Les constructeurs avec des arguments peuvent lever une exception si des erreurs sont rencontrées, tandis que le constructeur sans arguments réussit toujours.

Le constructeur avec un seul COLORREF paramètre construit un pinceau unie avec la couleur spécifiée. La couleur spécifie une valeur RVB et peut être construite avec la RGB macro dans WINDOWS.H.

Le constructeur avec deux paramètres construit un pinceau de hachure. Le nIndex paramètre spécifie l’index d’un modèle hachable. Le crColor paramètre spécifie la couleur.

Le constructeur avec un CBitmap paramètre construit un pinceau motifné. Le paramètre identifie une bitmap. La bitmap est supposée avoir été créée à l’aide CBitmap::CreateBitmapde , , CBitmap::CreateBitmapIndirectou CBitmap::LoadBitmapCBitmap::CreateCompatibleBitmap. La taille minimale d’une bitmap à utiliser dans un modèle de remplissage est de 8 pixels de 8 pixels.

Exemple

// CBrush::CBrush.
CBrush brush1;                           // Must initialize!
brush1.CreateSolidBrush(RGB(0, 0, 255)); // Blue brush.

CRect rc;
GetClientRect(&rc);
ScreenToClient(&rc);

// Save original brush.
CBrush *pOrigBrush = (CBrush *)pDC->SelectObject(&brush1);

// Paint upper left corner with blue brush.
pDC->Rectangle(0, 0, rc.Width() / 2, rc.Height() / 2);

// These constructors throw resource exceptions.
try
{
   // CBrush::CBrush(COLORREF crColor)
   CBrush brush2(RGB(255, 0, 0)); // Solid red brush.

   // CBrush::CBrush(int nIndex, COLORREF crColor)
   // Hatched green brush.
   CBrush brush3(HS_DIAGCROSS, RGB(0, 255, 0));

   // CBrush::CBrush(CBitmap* pBitmap)
   CBitmap bmp;
   // Load a resource bitmap.
   bmp.LoadBitmap(IDB_BRUSH);
   CBrush brush4(&bmp);

   pDC->SelectObject(&brush2);

   // Paint upper right corner with red brush.
   pDC->Rectangle(rc.Width() / 2, 0, rc.Width(),
                  rc.Height() / 2);

   pDC->SelectObject(&brush3);

   // Paint lower left corner with green hatched brush.
   pDC->Rectangle(0, rc.Height() / 2, rc.Width() / 2,
                  rc.Height());

   pDC->SelectObject(&brush4);

   // Paint lower right corner with resource brush.
   pDC->Rectangle(rc.Width() / 2, rc.Height() / 2,
                  rc.Width(), rc.Height());
}
catch (CResourceException *e)
{
   e->ReportError();
   e->Delete();
}

// Reselect original brush into device context.
pDC->SelectObject(pOrigBrush);

CBrush::CreateBrushIndirect

Initialise un pinceau avec un style, une couleur et un motif spécifiés dans une LOGBRUSH structure.

BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);

Paramètres

lpLogBrush
Pointe vers une LOGBRUSH structure qui contient des informations sur le pinceau.

Valeur de retour

Une valeur différente de zéro si la fonction réussit ; sinon, 0.

Notes

Le pinceau peut ensuite être sélectionné comme pinceau actuel pour n’importe quel contexte d’appareil.

Un pinceau créé à l’aide d’une bitmap monochrome (1 plan, 1 bits par pixel) est dessinée à l’aide des couleurs actuelles du texte et de l’arrière-plan. Les pixels représentés par un bit défini sur 0 seront dessinés avec la couleur de texte actuelle. Les pixels représentés par un bit défini sur 1 seront dessinés avec la couleur d’arrière-plan actuelle.

Exemple

// Initialize a LOGBRUSH structure.
LOGBRUSH logBrush;
logBrush.lbStyle = BS_HATCHED;
logBrush.lbColor = RGB(0, 192, 192);
logBrush.lbHatch = HS_CROSS;

// Declare an uninitialized CBrush ...
CBrush brush;
// ... and initialize it with the LOGBRUSH.
brush.CreateBrushIndirect(&logBrush);

// Select the brush (and perhaps a pen) into
// the device context.
CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush);
CPen *pOldPen = (CPen *)pDC->SelectStockObject(BLACK_PEN);

// Have fun!
pDC->Pie(CRect(100, 100, 300, 300), CPoint(0, 0), CPoint(50, 200));

// Restore the original device context objects.
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);

CBrush::CreateDIBPatternBrush

Initialise un pinceau avec le modèle spécifié par une bitmap indépendante de l’appareil (DIB).

BOOL CreateDIBPatternBrush(
    HGLOBAL hPackedDIB,
    UINT nUsage);

BOOL CreateDIBPatternBrush(
    const void* lpPackedDIB,
    UINT nUsage);

Paramètres

hPackedDIB
Identifie un objet mémoire globale contenant une bitmap indépendante de l’appareil (DIB).

nUsage
Spécifie si les bmiColors[] champs de la BITMAPINFO structure de données (une partie de la « DIB empaquetée ») contiennent des valeurs ou des index RVB explicites dans la palette logique actuellement réalisée. Le paramètre doit être l’une des valeurs suivantes :

  • DIB_PAL_COLORS La table de couleurs se compose d’un tableau d’index 16 bits.

  • DIB_RGB_COLORS La table de couleurs contient des valeurs RVB littérales.

lpPackedDIB
Pointe vers une DIB packée composée d’une structure immédiatement suivie d’un BITMAPINFO tableau d’octets définissant les pixels de la bitmap.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Le pinceau peut ensuite être sélectionné pour n’importe quel contexte d’appareil qui prend en charge les opérations raster.

Les deux versions diffèrent de la façon dont vous gérez la DIB :

  • Dans la première version, pour obtenir un handle vers la DIB que vous appelez la fonction Windows GlobalAlloc pour allouer un bloc de mémoire globale, puis remplir la mémoire avec la DIB packée.

  • Dans la deuxième version, il n’est pas nécessaire d’appeler GlobalAlloc pour allouer de la mémoire pour la DIB packée.

Une DIB packée se compose d’une BITMAPINFO structure de données immédiatement suivie du tableau d’octets qui définit les pixels de la bitmap. Les bitmaps utilisées comme modèles de remplissage doivent être de 8 pixels par 8 pixels. Si la bitmap est plus grande, Windows crée un modèle de remplissage en utilisant uniquement les bits correspondant aux 8 premières lignes et 8 colonnes de pixels dans le coin supérieur gauche de la bitmap.

Lorsqu’une application sélectionne un pinceau de modèle DIB bicolore dans un contexte d’appareil monochrome, Windows ignore les couleurs spécifiées dans la DIB et affiche plutôt le pinceau de modèle à l’aide du texte actuel et des couleurs d’arrière-plan du contexte de l’appareil. Les pixels mappés à la première couleur (au décalage 0 dans la table de couleurs DIB) de la DIB sont affichés à l’aide de la couleur de texte. Les pixels mappés à la deuxième couleur (à décalage 1 dans la table de couleurs) sont affichés à l’aide de la couleur d’arrière-plan.

Pour plus d’informations sur l’utilisation des fonctions Windows suivantes, consultez le Kit de développement logiciel (SDK) Windows :

  • CreateDIBPatternBrush (Cette fonction est fournie uniquement pour la compatibilité avec les applications écrites pour les versions de Windows antérieures à la version 3.0 ; utilisez la CreateDIBPatternBrushPt fonction.)

  • CreateDIBPatternBrushPt (Cette fonction doit être utilisée pour les applications Win32.)

  • GlobalAlloc

Exemple

// Resource handle to bitmap.
HRSRC hRes;
// Global handles to bitmap resource.
HGLOBAL hData;
void *hLockedData;
CBrush brush;

// Find the resource handle.
hRes = ::FindResource(AfxGetResourceHandle(),
                      MAKEINTRESOURCE(IDB_BRUSH), RT_BITMAP);
if (hRes != NULL)
{
   // Lock and Load (or Load and Lock).
   if (((hData = ::LoadResource(AfxGetResourceHandle(),
                                hRes)) != NULL) &&
       ((hLockedData = ::LockResource(hData)) != NULL))
   {
      // Initialize the brush.
      brush.CreateDIBPatternBrush((const void *)hLockedData,
                                  DIB_RGB_COLORS);

      // Select the brush into the device context.
      CBrush *pOldBrush = pDC->SelectObject(&brush);

      // Draw.
      pDC->Rectangle(50, 50, 200, 200);

      // Restore the original device context.
      pDC->SelectObject(pOldBrush);

      // Free the resource.
      ::FreeResource(hLockedData);
   }
}

CBrush::CreateHatchBrush

Initialise un pinceau avec le motif et la couleur hachures spécifiés.

BOOL CreateHatchBrush(
    int nIndex,
    COLORREF crColor);

Paramètres

nIndex
Spécifie le style de hachure du pinceau. Il peut s’agir de l’une des valeurs suivantes :

  • HS_BDIAGONAL Hachure vers le bas (gauche à droite) à 45 degrés

  • HS_CROSS Crosshatch horizontal et vertical

  • HS_DIAGCROSS Hachage croisé à 45 degrés

  • HS_FDIAGONAL Hache vers le haut (gauche à droite) à 45 degrés

  • HS_HORIZONTAL Hachure horizontale

  • HS_VERTICAL Hachure verticale

crColor
Spécifie la couleur de premier plan du pinceau sous forme de couleur RVB (couleur des hachures). Pour plus d’informations, consultez COLORREF le Kit de développement logiciel (SDK) Windows.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Le pinceau peut ensuite être sélectionné comme pinceau actuel pour n’importe quel contexte d’appareil.

Exemple

CBrush brush;
brush.CreateHatchBrush(HS_BDIAGONAL, RGB(255, 0, 0));

CBrush *pOldBrush;
CPen *pOldPen;

pOldBrush = (CBrush *)pDC->SelectObject(&brush);
pOldPen = (CPen *)pDC->SelectStockObject(NULL_PEN);
pDC->Ellipse(CRect(50, 50, 250, 250));

pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);

CBrush::CreatePatternBrush

Initialise un pinceau avec un modèle spécifié par une bitmap.

BOOL CreatePatternBrush(CBitmap* pBitmap);

Paramètres

pBitmap
Identifie une bitmap.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Le pinceau peut ensuite être sélectionné pour n’importe quel contexte d’appareil qui prend en charge les opérations raster. La bitmap identifiée par pBitmap est généralement initialisée à l’aide de la CBitmap::CreateBitmapfonction , ou CBitmap::LoadBitmapCBitmap::CreateCompatibleBitmap . CBitmap::CreateBitmapIndirect

Les bitmaps utilisées comme modèles de remplissage doivent être de 8 pixels par 8 pixels. Si la bitmap est plus grande, Windows utilise uniquement les bits correspondant aux 8 premières lignes et colonnes de pixels dans le coin supérieur gauche de la bitmap.

Un pinceau de modèle peut être supprimé sans affecter la bitmap associée. Cela signifie que l’image bitmap peut être utilisée pour créer n’importe quel nombre de pinceaux de modèle.

Un pinceau créé à l’aide d’une bitmap monochrome (1 plan de couleur, 1 bit par pixel) est dessiné à l’aide des couleurs actuelles du texte et de l’arrière-plan. Les pixels représentés par un bit défini sur 0 sont dessinés avec la couleur de texte actuelle. Les pixels représentés par un bit défini sur 1 sont dessinés avec la couleur d’arrière-plan actuelle.

Pour plus d’informations sur l’utilisation CreatePatternBrushd’une fonction Windows, consultez le Kit de développement logiciel (SDK) Windows.

Exemple

// Create a hatched bit pattern.
WORD HatchBits[8] = {0x11, 0x22, 0x44, 0x88, 0x11,
                     0x22, 0x44, 0x88};

// Use the bit pattern to create a bitmap.
CBitmap bm;
bm.CreateBitmap(8, 8, 1, 1, HatchBits);

// Create a pattern brush from the bitmap.
CBrush brush;
brush.CreatePatternBrush(&bm);

// Select the brush into a device context, and draw.
CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush);
pDC->RoundRect(CRect(50, 50, 200, 200), CPoint(10, 10));

// Restore the original brush.
pDC->SelectObject(pOldBrush);

CBrush::CreateSolidBrush

Initialise un pinceau avec une couleur unie spécifiée.

BOOL CreateSolidBrush(COLORREF crColor);

Paramètres

crColor
Structure COLORREF qui spécifie la couleur du pinceau. La couleur spécifie une valeur RVB et peut être construite avec la RGB macro dans WINDOWS.H.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Le pinceau peut ensuite être sélectionné comme pinceau actuel pour n’importe quel contexte d’appareil.

Lorsqu’une application a fini d’utiliser le pinceau créé par CreateSolidBrush, elle doit sélectionner le pinceau hors du contexte de l’appareil.

Exemple

Consultez l’exemple pour CBrush::CBrush.

CBrush::CreateSysColorBrush

Initialise une couleur de pinceau.

BOOL CreateSysColorBrush(int nIndex);

Paramètres

nIndex
Spécifie un index de couleur. Cette valeur correspond à la couleur utilisée pour peindre l’un des 21 éléments de fenêtre. Consultez GetSysColor le Kit de développement logiciel (SDK) Windows pour obtenir la liste des valeurs.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Le pinceau peut ensuite être sélectionné comme pinceau actuel pour n’importe quel contexte d’appareil.

Lorsqu’une application a fini d’utiliser le pinceau créé par CreateSysColorBrush, elle doit sélectionner le pinceau hors du contexte de l’appareil.

Exemple

// Declare a CBrush and initialize to a system color.
CBrush brush;
brush.CreateSysColorBrush(COLOR_BTNFACE);

// Select the brush into the device context.
CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush);

// Draw.
CRect rect(50, 50, 150, 150);
pDC->Rectangle(rect);

// Reselect the original brush.
pDC->SelectObject(pOldBrush);

CBrush::FromHandle

Retourne un pointeur vers un CBrush objet lorsqu’un handle est donné à un objet Windows HBRUSH .

static CBrush* PASCAL FromHandle(HBRUSH hBrush);

Paramètres

hBrush
HANDLE vers un pinceau Windows GDI.

Valeur de retour

Pointeur vers un CBrush objet en cas de réussite ; sinon NULL.

Notes

Si un CBrush objet n’est pas déjà attaché au handle, un objet temporaire CBrush est créé et attaché. Cet objet temporaire CBrush n’est valide que jusqu’à la prochaine heure d’inactivité de l’application dans sa boucle d’événements. À ce stade, tous les objets graphiques temporaires sont supprimés. En d’autres termes, l’objet temporaire est valide uniquement pendant le traitement d’un message de fenêtre.

Pour plus d’informations sur l’utilisation d’objets graphiques, consultez Objets graphiques dans le Kit de développement logiciel (SDK) Windows.

Exemple

Consultez l’exemple de CBrush ::CBrush.

CBrush::GetLogBrush

Appelez cette fonction membre pour récupérer la LOGBRUSH structure.

int GetLogBrush(LOGBRUSH* pLogBrush);

Paramètres

pLogBrush
Pointe vers une LOGBRUSH structure qui contient des informations sur le pinceau.

Valeur de retour

Si la fonction réussit et pLogBrush est un pointeur valide, la valeur de retour est le nombre d’octets stockés dans la mémoire tampon.

Si la fonction réussit et pLogBrush est NULL, la valeur de retour est le nombre d’octets requis pour contenir les informations que la fonction stockerait dans la mémoire tampon.

Si la fonction échoue, la valeur de retour est 0.

Notes

La LOGBRUSH structure définit le style, la couleur et le modèle d’un pinceau.

Par exemple, appel GetLogBrush pour correspondre à la couleur ou au motif particulier d’une bitmap.

Exemple

// Example for CBrush::GetLogBrush
LOGBRUSH logbrush;
brushExisting.GetLogBrush(&logbrush);
CBrush brushOther(logbrush.lbColor);

// Another example
// Declare a LOGBRUSH
LOGBRUSH logBrush;

// Using a bitmap for this example.
// The bitmap should be a project resource.
CBitmap bm;
bm.LoadBitmap(IDB_BRUSH);

try
{
   // Create a brush
   CBrush brush1(&bm);

   // Use GetLogBrush to fill the LOGBRUSH structure
   brush1.GetLogBrush(&logBrush);

   // Create a second brush using the LOGBRUSH data
   CBrush brush2;
   brush2.CreateBrushIndirect(&logBrush);

   // Use the first brush
   CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush1);
   pDC->Rectangle(CRect(50, 50, 150, 150));

   // The second brush has the specified characteristics
   // of the first brush
   pDC->SelectObject(&brush2);
   pDC->Ellipse(200, 50, 300, 150);

   // Reselect the original brush
   pDC->SelectObject(pOldBrush);
}
catch (CResourceException *e)
{
   e->ReportError();
   e->Delete();
}

CBrush::operator HBRUSH

Utilisez cet opérateur pour obtenir le handle GDI Windows attaché de l’objet CBrush .

operator HBRUSH() const;

Valeur de retour

En cas de réussite, un handle vers l’objet GDI Windows représenté par l’objet CBrush ; sinon NULL.

Notes

Cet opérateur est un opérateur de cast, qui prend en charge l’utilisation directe d’un HBRUSH objet.

Pour plus d’informations sur l’utilisation d’objets graphiques, consultez Objets graphiques dans le Kit de développement logiciel (SDK) Windows.

Exemple

RECT rc = {50, 50, 200, 200};

Rectangle(pDC->GetSafeHdc(), rc.left, rc.top, rc.right, rc.bottom);

// The Win32 call to FillRect requires an HBRUSH.
// The HBRUSH operator casts the CBrush object
// to the required type.
CBrush brush;
brush.CreateSysColorBrush(COLOR_BTNFACE);
FillRect(pDC->GetSafeHdc(), &rc, (HBRUSH)brush);

Voir aussi

Exemple MFC PROPDLG
CGdiObject Classe
Graphique hiérarchique
CBitmap Classe
CDC Classe