Compartir a través de


Contextos de dispositivo de memoria

Para permitir que las aplicaciones coloquen la salida en la memoria en lugar de enviarlo a un dispositivo real, use un contexto de dispositivo especial para las operaciones de mapa de bits denominadas contexto de dispositivo de memoria . Un controlador de dominio de memoria permite al sistema tratar una parte de la memoria como un dispositivo virtual. Es una matriz de bits en memoria que una aplicación puede usar temporalmente para almacenar los datos de color de los mapas de bits creados en una superficie de dibujo normal. Dado que el mapa de bits es compatible con el dispositivo, un controlador de dominio de memoria también se conoce a veces como un contexto de dispositivo compatible .

El controlador de dominio de memoria almacena imágenes de mapa de bits para un dispositivo determinado. Una aplicación puede crear un controlador de dominio de memoria llamando a la función createCompatibleDC .

El mapa de bits original de un controlador de dominio de memoria es simplemente un marcador de posición. Sus dimensiones son de un píxel por un píxel. Para que una aplicación pueda empezar a dibujar, debe seleccionar un mapa de bits con el ancho y alto adecuados en el controlador de dominio llamando a la función SelectObject. Para crear un mapa de bits de las dimensiones adecuadas, use elCreateBitmap de, CreateBitmapIndirecto función CreateCompatibleBitmap. Después de seleccionar el mapa de bits en el controlador de dominio de memoria, el sistema reemplaza la matriz de un solo bit por una matriz lo suficientemente grande como para almacenar información de color para el rectángulo especificado de píxeles.

Cuando una aplicación pasa el identificador devuelto por CreateCompatibleDC a una de las funciones de dibujo, la salida solicitada no aparece en la superficie de dibujo de un dispositivo. En su lugar, el sistema almacena la información de color de la línea resultante, la curva, el texto o la región en la matriz de bits. La aplicación puede copiar la imagen almacenada en la memoria en una superficie de dibujo llamando a la funciónbitBlt de, identificando el controlador de dominio de memoria como el contexto del dispositivo de origen y una ventana o controlador de dominio de pantalla como contexto del dispositivo de destino.

Al mostrar una DIB o una DDB creada a partir de un DIB en un dispositivo de paleta, puede mejorar la velocidad a la que se dibuja la imagen mediante la organización de la paleta lógica para que coincida con el diseño de la paleta del sistema. Para ello, llame a GetDeviceCaps con el valor NUMRESERVED para obtener el número de colores reservados en el sistema. A continuación, llame a GetSystemPaletteEntries y rellene las entradas NUMRESERVED/2 primera y última de la paleta lógica con los colores del sistema correspondientes. Por ejemplo, si NUMRESERVED es 20, rellenaría las 10 primeras y últimas 10 entradas de la paleta lógica con los colores del sistema. A continuación, rellene los 256 colores NUMRESERVED restantes de la paleta lógica (en nuestro ejemplo, los 236 colores restantes) con colores de la DIB y establezca la marca PC_NOCOLLAPSE en cada uno de estos colores.

Para obtener más información sobre el color y las paletas, vea Colores. Para obtener más información sobre los mapas de bits y las operaciones de mapa de bits, vea mapas de bits.