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
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ésHS_CROSS
Crosshatch horizontal et verticalHS_DIAGCROSS
Hachage croisé à 45 degrésHS_FDIAGONAL
Hache vers le haut (gauche à droite) à 45 degrésHS_HORIZONTAL
Hachure horizontaleHS_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
, CreateBrushIndirect
CreatePatternBrush
, ou CreateDIBPatternBrush
CreateSolidBrush
. 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::CreateBitmap
de , , CBitmap::CreateBitmapIndirect
ou CBitmap::LoadBitmap
CBitmap::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 laCreateDIBPatternBrushPt
fonction.)CreateDIBPatternBrushPt
(Cette fonction doit être utilisée pour les applications Win32.)
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ésHS_CROSS
Crosshatch horizontal et verticalHS_DIAGCROSS
Hachage croisé à 45 degrésHS_FDIAGONAL
Hache vers le haut (gauche à droite) à 45 degrésHS_HORIZONTAL
Hachure horizontaleHS_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::CreateBitmap
fonction , ou CBitmap::LoadBitmap
CBitmap::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 CreatePatternBrush
d’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