Pregunta

Como un recién llegado a MFC, veo contextos de dispositivo (DC) mucho. Vagamente entender que es algo relacionado con el dibujo, pero los detalles no están muy bien explicado en cualquier lugar que puedo encontrar. ¿Qué creando un "contexto de dispositivo compatible" significa, y por qué es importante? ¿Qué SelectObject hacer y cómo debo hacer una primera DC compatibles?

¿Fue útil?

Solución

Un contexto de dispositivo es sólo un lugar en el que se produce el dibujo, por lo que si usted tiene dos DC es diferente, que está dibujando en dos lugares diferentes. Algo así como un identificador de archivo.

contextos de dispositivo puede referirse a bienes raíces en la pantalla, o para mapas de bits que simplemente residen en la memoria, y probablemente otros lugares, también, esos son sólo los dos que se me ocurre en este momento.

contextos compatibles son los que tienen la misma organización pixel subyacente, por lo que se entiende el número de bits por píxel, bytes por píxel, la organización de color y así sucesivamente. contextos de dispositivo de mapa de bits de memoria pueden tener cualquier organización que desee, pero sus contextos de pantalla se va a estar relacionado (con el tiempo) a los tampones de la tarjeta gráfica, que (según el modo, etc.) tienen una organización muy específica píxel.

Tener contextos compatibles sus medios eficientes para transferir datos de imagen entre ellas, ya que se requiere poca o ninguna traducción de los datos. En el otro extremo, si usted tiene una paleta de 256 colores, mapa de 8 bits y se intenta blit a una pantalla que tiene 8 bits cada uno de RGBA por píxel, hasta el último píxel requiere de masajes significativo, ya que se copia y así copiar incompatibles mapas de bits es mucho más lenta. De acuerdo con la documentación Win32 SDK, al menos BitBlt () y StretchBlt () "convertir el formato de color de origen para que coincida con el formato de destino", por lo que se puede hacer.

Investigar CreateCompatibleDC () y CreateCompatibleBitmap () como puntos de partida para la forma de crear contextos de dibujo que son compatibles con las ya existentes.

SelectObject () controles que los recursos están actualmente activos en el contexto de dispositivo. Un contexto actual tiene un lápiz, pincel, la fuente y de mapa de bits. Esto hace que una gran cantidad de la otra GDI llama más simple ya que le permite specifiy menos parámetros. Por ejemplo, usted no tiene que especificar la fuente cuando se utiliza TextOut (), pero si desea cambiar el tipo de letra, que es donde SelectObject () entra en juego. Si usted alimenta SelectObject () un identificador para un tipo de letra, el regreso valor es un identificador para el tipo de letra que estaba en efecto, y las operaciones posteriores utilizar la nueva fuente. El comportamiento es el mismo para los otros tipos de recursos, bolígrafos, cepillos, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top