Freigeben über


CBrush::CreateDIBPatternBrush

Initialisiert ein Pinsel mit dem Muster, das durch eine geräteunabhängige Bitmap (DIBs) angegeben wird.

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

Parameter

  • hPackedDIB
    Identifiziert ein GLOBALArbeitsspeicher Objekt, das eine gepackte geräteunabhängige Bitmap (DIBs) enthält.

  • nUsage
    Gibt an, ob die bmiColors[] Felder der BITMAPINFO Datenstruktur (Teil von "packte DIB"), explizite RGB-Werte oder -Indizes auf die derzeit realisierte Logische Palette enthalten. Der Parameter muss einer der folgenden Werte sein:

    • DIB_PAL_COLORS die Farbtabelle besteht aus einem Array aus 16-Bit-Indizes.

    • DIB_RGB_COLORS die Farbtabelle enthält literale RGB-Werte.

  • lpPackedDIB
    zeigt auf einen gepackten DIB, das aus BITMAPINFO besteht, strukturieren direkt gefolgt von einem Bytearray, das die Pixel der Bitmap definiert.

Rückgabewert

Ungleich 0 (null), wenn erfolgreich; 0 andernfalls.

Hinweise

Der Pinsel kann für jeden Gerätekontext nach ausgewählt werden, der Rastervorgänge unterstützt.

Die beiden Versionen unterscheiden sich auf die Art, wie Sie die DIB-Datei behandeln:

  • In der ersten Version ein Handle für die DIB-Datei zu erhalten rufen Sie die Funktion Windows GlobalAlloc auf, um einen Block des globalen Arbeitsspeicher zuzuordnen und den Arbeitsspeicher mit dem gepackten DIB dann auszufüllen.

  • In der zweiten Version ist es nicht erforderlich, GlobalAlloc aufzurufen, um für das gepackte DIB Speicher reserviert.

Ein gepacktes DIB besteht aus einer BITMAPINFO Datenstruktur, die unmittelbar gefolgt vom Bytearray, das die Pixel der Bitmap definiert. Die Bitmaps, die als Füllmuster verwendet werden, sollte 8 Pixel x 8 Pixel besitzen. Wenn die Bitmap größer ist, erstellt ein Windows Füllmuster nur mithilfe der Bits entsprechend den ersten 8 Zeilen und 8 Spalten aus Pixel in der oberen linken Ecke der Bitmaps.

Wenn eine Anwendung einen Musterpinsel zwei Farbe DIB-Datei in einen monochromen Gerätekontext auswählt, ignoriert Windows die Farben, die im DIB angegeben werden und zeigt stattdessen den Musterpinsel mithilfe des aktuellen Text und der Hintergrundfarben des Gerätekontexts an. Die Pixel, die der ersten Farbe zugeordnet sind (an Offset 0 in der DIB-Farbtabelle) der DIB-Datei werden mithilfe der Textfarbe angezeigt. Die Pixel, die der zweiten Farbe zugeordnet sind (an Offset 1 in der Farbtabelle) werden mithilfe der Hintergrundfarbe angezeigt.

Informationen über die Verwendung der folgenden Windows-Funktionen, finden Sie unter Windows SDK:

  • CreateDIBPatternBrush (diese Funktion ist nur für Kompatibilität mit Anwendungen bereitgestellt, die zuvor für Versionen von Windows als 3,0 geschrieben werden; Verwenden Sie die Funktion CreateDIBPatternBrushPt .)

  • CreateDIBPatternBrushPt (diese Funktion sollte für Win32-Anwendungen.)

  • GlobalAlloc

Beispiel

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

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CBrush-Klasse

Hierarchiediagramm

CBrush::CreatePatternBrush

CBrush::CreateBrushIndirect

CBrush::CreateSolidBrush

CBrush::CreateHatchBrush

CGdiObject::CreateStockObject

CDC::SelectObject

CGdiObject::DeleteObject

CDC::GetBrushOrg

CDC::SetBrushOrg