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 denominada contexto de dispositivo de memoria. Un controlador de dominio de memoria permite al sistema tratar una parte de 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 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 en 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 la función CreateBitmap, CreateBitmapIndirect o CreateCompatibleBitmap . Una vez seleccionado 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ón BitBlt , 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 una DIB en un dispositivo de paleta, puede mejorar la velocidad a la que se dibuja la imagen organizando 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 de la paleta lógica con los colores del sistema correspondientes. Por ejemplo, si NUMRESERVED es 20, rellenaría las 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.