Compartir a través de


Clase CBitmap

Encapsula un mapa de bits de la Interfaz de dispositivo gráfico (GDI) de Windows y proporciona funciones miembro para manipular el mapa de bits.

Sintaxis

class CBitmap : public CGdiObject

Miembros

Constructores públicos

Nombre Descripción
CBitmap::CBitmap Construye un objeto CBitmap.

Métodos públicos

Nombre Descripción
CBitmap::CreateBitmap Inicializa el objeto con un mapa de bits de memoria dependiente de dispositivo que tiene el ancho, el alto y el patrón de bits especificados.
CBitmap::CreateBitmapIndirect Inicializa el objeto con un mapa de bits con el ancho, el alto y el patrón de bits (si se especifica uno) especificados en una estructura BITMAP.
CBitmap::CreateCompatibleBitmap Inicializa el objeto con un mapa de bits para que sea compatible con un dispositivo especificado.
CBitmap::CreateDiscardableBitmap Inicializa el objeto con un mapa de bits descartable para que sea compatible con un dispositivo especificado.
CBitmap::FromHandle Devuelve un puntero a un objeto CBitmap cuando se especifica un manipulador de un mapa de bits HBITMAP de Windows.
CBitmap::GetBitmap Rellena una estructura BITMAP con información sobre el mapa de bits.
CBitmap::GetBitmapBits Copia los bits del mapa de bits especificado en el búfer especificado.
CBitmap::GetBitmapDimension Devuelve el ancho y alto del mapa de bits. Se supone que la función miembro SetBitmapDimension ha establecido previamente el alto y el ancho.
CBitmap::LoadBitmap Inicializa el objeto cargando un recurso de mapa de bits con nombre desde el archivo ejecutable de la aplicación y asociando el mapa de bits al objeto.
CBitmap::LoadMappedBitmap Carga un mapa de bits y asigna colores a los colores actuales del sistema.
CBitmap::LoadOEMBitmap Inicializa el objeto cargando un mapa de bits predefinido de Windows y adjuntando el mapa de bits al objeto.
CBitmap::SetBitmapBits Establece los bits de un mapa de bits en los valores de bits especificados.
CBitmap::SetBitmapDimension Asigna un ancho y alto a un mapa de bits en unidades de 0,1 milímetros.

Operadores públicos

Nombre Descripción
CBitmap::operator HBITMAP Devuelve el controlador de Windows asociado al objeto CBitmap.

Comentarios

Para usar un objeto CBitmap, construya el objeto, asóciele un manipulador de mapa de bits con una de las funciones miembro de inicialización y, a continuación, llame a las funciones miembro del objeto.

Para más información sobre el uso de objetos gráficos como CBitmap, vea Objetos gráficos.

Jerarquía de herencia

CObject

CGdiObject

CBitmap

Requisitos

Encabezado: afxwin.h

CBitmap::CBitmap

Construye un objeto CBitmap.

CBitmap();

Comentarios

El objeto resultante debe inicializarse con una de las funciones miembro de inicialización.

CBitmap::CreateBitmap

Inicializa un mapa de bits de memoria dependiente de dispositivo que tiene el ancho, el alto y el patrón de bits especificados.

BOOL CreateBitmap(
    int nWidth,
    int nHeight,
    UINT nPlanes,
    UINT nBitcount,
    const void* lpBits);

Parámetros

nWidth
Especifica el ancho (en píxeles) del mapa de bits.

nHeight
Especifica el alto (en píxeles) del mapa de bits.

nPlanes
Especifica el número de planos de color del mapa de bits.

nBitcount
Especifica el número de bits de color por píxel de la pantalla.

lpBits
Apunta a una matriz de bytes que contiene los valores de bits de mapa de bits iniciales. Si es NULL, el nuevo mapa de bits se deja sin inicializar.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Para un mapa de bits de color, el parámetro nPlanes o nBitcount debe establecerse en 1. Si ambos parámetros se establecen en 1, CreateBitmap crea un mapa de bits monocromo.

Aunque un mapa de bits no se puede seleccionar directamente para un dispositivo de visualización, puede seleccionarse como el mapa de bits actual para un "contexto de dispositivo de memoria" mediante CDC::SelectObject y copiarse en cualquier contexto de dispositivo compatible con la función CDC::BitBlt.

Cuando termine con el objeto CBitmap creado por la función CreateBitmap , seleccione primero el mapa de bits fuera del contexto del dispositivo y elimine luego el objeto CBitmap .

Para más información, vea la descripción del campo bmBits en la estructura BITMAP. La estructura BITMAP se describe en la función miembro CBitmap::CreateBitmapIndirect.

CBitmap::CreateBitmapIndirect

Inicializa un mapa de bits que tiene el ancho, el alto y el patrón de bits (si se especifica uno) dado en la estructura a la que apunta lpBitmap.

BOOL CreateBitmapIndirect(LPBITMAP lpBitmap);

Parámetros

lpBitmap
Apunta a una estructura BITMAP que contiene información sobre el mapa de bits.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Aunque un mapa de bits no se puede seleccionar directamente para un dispositivo de visualización, puede seleccionarse como el mapa de bits actual para un contexto de dispositivo de memoria mediante CDC::SelectObject y copiarse en cualquier contexto de dispositivo compatible con la función CDC::BitBlt o CDC::StretchBlt. (La función CDC::PatBlt puede copiar el mapa de bits para el pincel actual directamente en el contexto del dispositivo de visualización).

Si la estructura BITMAP a la que apunta el parámetro lpBitmap se ha rellenado mediante la función GetObject, no se especifican los bits del mapa de bits y este no se inicializa. Para inicializar el mapa de bits, una aplicación puede usar una función como CDC::BitBlt o SetDIBits para copiar los bits del mapa de bits identificado por el primer parámetro de CGdiObject::GetObject en el mapa de bits creado por CreateBitmapIndirect.

Cuando termine con el objeto CBitmap creado por la función CreateBitmapIndirect, seleccione primero el mapa de bits fuera del contexto del dispositivo y luego elimine el objeto CBitmap.

CBitmap::CreateCompatibleBitmap

Inicializa un mapa de bits compatible con el dispositivo especificado por pDC.

BOOL CreateCompatibleBitmap(
    CDC* pDC,
    int nWidth,
    int nHeight);

Parámetros

pDC
Especifica el contexto del dispositivo.

nWidth
Especifica el ancho (en píxeles) del mapa de bits.

nHeight
Especifica el alto (en píxeles) del mapa de bits.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

El mapa de bits tiene el mismo número de planos de color o el mismo formato de bits por píxel que el contexto de dispositivo especificado. Se puede seleccionar como el mapa de bits actual para cualquier dispositivo de memoria compatible con el especificado por pDC.

Si pDC es un contexto de dispositivo de memoria, el mapa de bits devuelto tiene el mismo formato que el mapa de bits seleccionado actualmente en ese contexto del dispositivo. Un "contexto de dispositivo de memoria" es un bloque de memoria que representa una superficie de visualización. Se puede usar para preparar imágenes en memoria antes de copiarlas en la superficie de visualización real del dispositivo compatible.

Cuando se crea un contexto de dispositivo de memoria, GDI selecciona automáticamente para él un mapa de bits monocromático estándar.

Dado que un contexto de dispositivo de memoria de color puede tener seleccionados mapas de bits de color o monocromáticos, el formato del mapa de bits devuelto por la función CreateCompatibleBitmap no siempre es el mismo; sin embargo, el formato de un mapa de bits compatible para un contexto de dispositivo que no es de memoria siempre está en el formato del dispositivo.

Cuando termine con el objeto CBitmap creado con la función CreateCompatibleBitmap, seleccione primero el mapa de bits fuera del contexto del dispositivo y elimine luego el objeto CBitmap.

CBitmap::CreateDiscardableBitmap

Inicializa un mapa de bits descartable que es compatible con el contexto del dispositivo identificado por pDC.

BOOL CreateDiscardableBitmap(
    CDC* pDC,
    int nWidth,
    int nHeight);

Parámetros

pDC
Especifica un contexto de dispositivo.

nWidth
Especifica el ancho (en bits) del mapa de bits.

nHeight
Especifica el alto (en bits) del mapa de bits.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

El mapa de bits tiene el mismo número de planos de color o el mismo formato de bits por píxel que el contexto de dispositivo especificado. Una aplicación puede seleccionar este mapa de bits como mapa de bits actual para un dispositivo de memoria compatible con el especificado por pDC.

Windows solo puede descartar un mapa de bits creado por esta función si una aplicación no la ha seleccionado en un contexto de visualización. Si Windows descarta el mapa de bits cuando no está seleccionado y la aplicación intenta seleccionarla más adelante, la función CDC::SelectObject devolverá NULL.

Cuando termine con el objeto CBitmap creado con la función CreateDiscardableBitmap, seleccione primero el mapa de bits fuera del contexto del dispositivo y elimine luego el objeto CBitmap.

CBitmap::FromHandle

Devuelve un puntero a un objeto CBitmap cuando se especifica un manipulador de un mapa de bits GDI de Windows.

static CBitmap* PASCAL FromHandle(HBITMAP hBitmap);

Parámetros

hBitmap
Especifica un mapa de bits GDI de Windows.

Valor devuelto

Un puntero a un objeto CBitmap si se realiza correctamente; de lo contrario, NULL.

Comentarios

Si no hay un objeto CBitmap ya asociado al identificador, se crea y asocia un objeto CBitmap temporal. Este objeto CBitmap temporal solo es válido hasta la próxima vez que la aplicación tenga tiempo de inactividad en su bucle de eventos, momento en el que se eliminan todos los objetos gráficos temporales. Es decir, el objeto temporal solo será válido mientras se procesa un mensaje de ventana.

CBitmap::GetBitmap

Recupera las propiedades de imagen para el mapa de bits asociado.

int GetBitmap(BITMAP* pBitMap);

Parámetros

pBitMap
Puntero a una estructura BITMAP que recibirá las propiedades de la imagen. Este parámetro no debe ser NULL.

Valor devuelto

Distinto de cero si el método se realizó correctamente. En caso contrario, 0.

Comentarios

CBitmap::GetBitmapBits

Copia el patrón de bits del mapa de bits asociado en el búfer especificado.

DWORD GetBitmapBits(
    DWORD dwCount,
    LPVOID lpBits) const;

Parámetros

dwCount
El número de bytes que se deben copiar en el búfer.

lpBits
Puntero al búfer que recibirá el mapa de bits.

Valor devuelto

Número de bytes copiados en el búfer si el método se realizó correctamente; de lo contrario, 0.

Comentarios

Use CBitmap::GetBitmap para determinar el tamaño de búfer necesario.

CBitmap::GetBitmapDimension

Devuelve el ancho y alto del mapa de bits.

CSize GetBitmapDimension() const;

Valor devuelto

Ancho y alto del mapa de bits, medido en unidades de 0,1 milímetros. El alto está en el miembro cy del objeto CSize y el ancho está en el miembro cx. Si el ancho y el alto del mapa de bits no se han establecido mediante SetBitmapDimension, el valor devuelto es 0.

Comentarios

Se supone que el alto y el ancho se han establecido previamente mediante la función miembro SetBitmapDimension.

CBitmap::LoadBitmap

Carga el recurso de mapa de bits denominado por lpszResourceName o identificado por el número de id. en nIDResource desde el archivo ejecutable de la aplicación.

BOOL LoadBitmap(LPCTSTR lpszResourceName);
BOOL LoadBitmap(UINT nIDResource);

Parámetros

lpszResourceName
Apunta a una cadena finalizada en null que contiene el nombre del recurso de mapa de bits.

nIDResource
Especifica el número del id. de recurso del recurso de mapa de bits.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

El mapa de bits cargado se adjunta al objeto CBitmap.

Si el mapa de bits identificado por lpszResourceName no existe o si no hay memoria suficiente para cargar el mapa de bits, la función devuelve 0.

Puede usar la función CGdiObject::DeleteObject para eliminar el mapa de bits cargado por la función LoadBitmap o el destructor CBitmap eliminará el objeto automáticamente.

Precaución

Antes de eliminar el objeto, asegúrese de que no está seleccionado en un contexto de dispositivo.

Los siguientes mapas de bits se agregaron a las versiones 3.1 y posteriores de Windows:

OBM_UPARRROWIOBM_DNARROWIOBM_RGARROWIOBM_LFARROWI

Estos mapas de bits no se encuentran en los controladores de dispositivo para las versiones 3.0 y anteriores de Windows. Para una lista completa de mapas de bits y una presentación de su apariencia, consulte Windows SDK.

CBitmap::LoadMappedBitmap

Llame a esta función miembro para cargar un mapa de bits y asignar los colores a los colores del sistema actuales.

BOOL LoadMappedBitmap(
    UINT nIDBitmap,
    UINT nFlags = 0,
    LPCOLORMAP lpColorMap = NULL,
    int nMapSize = 0);

Parámetros

nIDBitmap
Id. del recurso de mapa de bits.

nFlags
Marca de un mapa de bits. Puede ser cero o CMB_MASKED.

lpColorMap
Puntero a una estructura COLORMAP que contiene la información de color necesaria para asignar los mapas de bits. Si este parámetro es NULL, la función usa el mapa de colores predeterminado.

nMapSize
Número de mapas de colores a los que lpColorMap apunta.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

De forma predeterminada, LoadMappedBitmap asignará los colores que se usan habitualmente en glifos de botón.

Para información sobre cómo crear un mapa de bits asignado, consulte la función CreateMappedBitmap de Windows y la estructura COLORMAP en Windows SDK.

CBitmap::LoadOEMBitmap

Carga un mapa de bits predefinido usado por Windows.

BOOL LoadOEMBitmap(UINT nIDBitmap);

Parámetros

nIDBitmap
Número de id. del mapa de bits predefinido de Windows. Los valores posibles se enumeran a continuación desde WINDOWS.H:

OBM_BTNCORNERS
OBM_BTSIZE
OBM_CHECK
OBM_CHECKBOXES
OBM_CLOSE
OBM_COMBO
OBM_DNARROW
OBM_DNARROWD
OBM_DNARROWI
OBM_LFARROW
OBM_LFARROWD
OBM_LFARROWI

OBM_MNARROW
OBM_OLD_CLOSE
OBM_OLD_DNARROW
OBM_OLD_LFARROW
OBM_OLD_REDUCE
OBM_OLD_RESTORE
OBM_OLD_RGARROW
OBM_OLD_UPARROW
OBM_OLD_ZOOM
OBM_REDUCE
OBM_REDUCED

OBM_RESTORE
OBM_RESTORED
OBM_RGARROW
OBM_RGARROWD
OBM_RGARROWI
OBM_SIZE
OBM_UPARROW
OBM_UPARROW
OBM_UPARROWD
OBM_ZOOM
OBM_ZOOMD

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Los nombres de mapa de bits que comienzan por OBM_OLD representan mapas de bits usados por las versiones de Windows anteriores a la versión 3.0.

Tenga en cuenta que la constante OEMRESOURCE debe definirse antes de incluir WINDOWS.H para poder usar cualquiera de las constantes OBM_.

CBitmap::operator HBITMAP

Use este operador para obtener el identificador GDI de Windows adjunto del CBitmap objeto.

operator HBITMAP() const;

Valor devuelto

Si se ejecuta correctamente, un manipulador del objeto de la GDI de Windows representado por el objeto CBitmap; de lo contrario, NULL.

Comentarios

Este operador es un operador de conversión que admite el uso directo de un objeto HBITMAP.

Para más información sobre el uso de objetos gráficos, consulte Objetos gráficos en Windows SDK.

CBitmap::SetBitmapBits

Establece los bits de un mapa de bits en los valores de bits proporcionados por lpBits.

DWORD SetBitmapBits(
    DWORD dwCount,
    const void* lpBits);

Parámetros

dwCount
Especifica el número de bytes a los que lpBits apunta.

lpBits
Apunta a la matriz BYTE que contiene los valores de píxel que se van a copiar en el objeto CBitmap. Para que el mapa de bits pueda representar correctamente su imagen, se deben formatear los valores para que se ajusten a los valores de alto, ancho y profundidad de color especificados cuando se creó la instancia de CBitmap. Para obtener más información, vea CBitmap::CreateBitmap.

Valor devuelto

Número de bytes utilizados para establecer los bits del mapa de bits; 0 si se produce un error en la función.

CBitmap::SetBitmapDimension

Asigna un ancho y alto a un mapa de bits en unidades de 0,1 milímetros.

CSize SetBitmapDimension(
    int nWidth,
    int nHeight);

Parámetros

nWidth
Especifica el ancho del mapa de bits (en unidades de 0,1 milímetros).

nHeight
Especifica el alto del mapa de bits (en unidades de 0,1 milímetros).

Valor devuelto

Dimensiones de mapa de bits anteriores. La altura está en la variable miembro cy del objeto CSize y el ancho está en la variable miembro cx.

Comentarios

La GDI no usa estos valores, excepto para devolverlos cuando una aplicación llama a la función miembro GetBitmapDimension.

Consulte también

Ejemplo MDI de MFC
CGdiObject (clase)
Gráfico de jerarquías