CBrush::CreateDIBPatternBrush

Inizializza un pennello al modello specificato da una bitmap indipendente dal dispositivo (DIB).

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

Parametri

  • hPackedDIB
    Identifica un oggetto di memoria globale che contiene una bitmap indipendente dal dispositivo compressa (DIB).

  • nUsage
    Specifica se i campi bmiColors[] la struttura dei dati BITMAPINFO (parte di "ha wrapping DIB") contengono valori espliciti o per i valori RGB nella tavolozza logica attualmente eseguita.Il parametro deve essere uno dei seguenti valori:

    • DIB_PAL_COLORS la tabella dei colori è costituito da una matrice degli indici a 16 bit.

    • DIB_RGB_COLORS la tabella dei colori contiene i valori letterali RGB.

  • lpPackedDIB
    I punti DIB compresso costituito da BITMAPINFO struttura immediatamente seguita da una matrice di byte che definiscono i pixel della bitmap.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Note

Il pennello successivamente può essere selezionato per qualsiasi contesto di dispositivo tale operazioni raster supportate.

Le due versioni differiscono nella modalità di gestione della DIB:

  • Nella prima versione, ottenere un handle a DIB chiama la funzione di Windows GlobalAlloc per allocare un blocco di memoria globale e quindi per riempire la memoria di DIB compresso.

  • Nella seconda versione, non è necessario chiamare GlobalAlloc per allocare memoria per il pacchetto DIB.

Un pacchetto DIB è costituito da una struttura dati BITMAPINFO immediatamente seguita dalla matrice di byte che definisce i pixel della bitmap.Le immagini utilizzate come modelli di riempimento devono presentare dimensioni di 8 per 8 pixel.Se la bitmap è più grande, Windows crea un modello di riempimento utilizzando solo i bit corrispondenti alle prime 8 righe e colonne di 8 pixel nell'angolo superiore sinistro della bitmap.

Quando un'applicazione viene selezionato un pennello del modello di due colori della DIB in un contesto di dispositivo schermi, Windows ignora i colori specificati in DIB e vengono invece visualizzati il pennello del modello utilizzando il testo e i colori di sfondo correnti del contesto di dispositivo.I pixel associati al primo colore (a offset 0 nella tabella dei colori della DIB) DIB viene visualizzata utilizzando il colore del testo.I pixel associati al secondo colore (a offset 1 nella tabella dei colori) visualizzato con il colore di sfondo.

Per informazioni sull'utilizzo delle seguenti funzioni Windows, vedere Windows SDK:

  • CreateDIBPatternBrush (questa funzione è disponibile solo per la compatibilità delle applicazioni scritte in precedenza per le versioni di Windows 3,0; utilizzare la funzione CreateDIBPatternBrushPt ).

  • CreateDIBPatternBrushPt (questa funzione deve essere utilizzata anche per le applicazioni basate su win32.)

  • GlobalAlloc

Esempio

// 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);
   }
}

Requisiti

Header: afxwin.h

Vedere anche

Riferimenti

Classe di CBrush

Grafico della gerarchia

CBrush::CreatePatternBrush

CBrush::CreateBrushIndirect

CBrush::CreateSolidBrush

CBrush::CreateHatchBrush

CGdiObject::CreateStockObject

CDC::SelectObject

CGdiObject::DeleteObject

CDC::GetBrushOrg

CDC::SetBrushOrg