wingdi.h


SetGraphicsMode

La función SetGraphicsMode asigna el modo gráfico para el contexto de dispositivo especificado.

Sintaxis

int SetGraphicsMode(
    HDC hdc    // manipulador de contexto de dispositivo
    int iMode  // modo gráfico
   );

Parámetros

hdc: identifica el contexto de dispositivo.

iMode: especifica el modo gráfico. Este parámetro puede ser uno de los valores siguientes:

Valor Significado
GM_COMPATIBLE activa el modo gráfico compatible con la versión 3.1 de Windows. En este modo gráfico por defecto. Si se especifica este valor, la aplicación sólo puede modificar las transformaciones de mundo a dispositivo mediante llamadas a funciones que asignen dimensiones y orígenes de ventana y viewport, pero no mediante el uso de las funciones SetWorldTransform o ModifyWorldTransform; las llamadas a estas funciones fallarán. Ejemplos de funciones que asignen tamaños y orígenes a ventanas o viewports son SetViewportExtEx y SetWindowExtEx.
GM_ADVANCED Windows NT: asigna el modo gráfico avanzado que permite transformaciones de mundo. Este es el valor que hay que especificar si la aplicación debe asignar o modificar las transformaciones de mundo para el contexto de dispositivo especificado. En este modo gráfico, incluyendo la salida de texto, se ajustan completamente las transformaciones de mundo a dispositivo especificadas en el contexto de dispositivo.
Windows 95: el valor GM_ADVANCED no está soportado. Cuando se ejecutan metaficheros avanzados, Windows 95 lo soporta para que estos metaficheros tengan el mismo aspecto en Windows 95 que en Windows NT. Para lograr esto, Windows 95 simula el modo GM_ADVANCED cuando ejecuta ciertos registros de metaficheros mejorados.

Valor de retorno

Si la función tiene éxito, el valor de retorno es modo gráfico previo.

En otro caso, el valor de retorno es cero.

Observaciones

Existen tres áreasn en las que la salida gráfica es diferente según el modo gráfico:

  1. Salida de texto: en el modo GM_COMPATIBLE, el texto TrueType (o fuentes vectoriales) se comporta mucho mejor que el texto de fuentes matriciales con respecto a la transformación de mundo a dispositivo en el DC. El texto TrueType siempre se escribe de izquierda a derecha y correctamente orientado, aunque el resto de los gráficos estén girados en el eje x o en el y. Sólo el grosor del texot TrueType (o de la fuente vectorial) se escala en la forma apropiada. El único modo de escribir texto no horizontal en el modo GM_COMPATIBLE es especificar ángulos de escape y orientación no nulos para la fuente lógica selecionada en el contexto de dispositivo.
    En el modo GM_ADVANCED, el texto TrueType (o de fuente vectorial) sigue fielmente la transformación de mundo a dispositivo del contexto de dispositivo. Sólo las fuentes matriciales tienen capacidades de transformación muy limitadas (estiramientos en algunos factores enteros). El interfaz gráfico de dispositivos (GDI) intenta producir la mejor salida que puede con fuentes matriciales para transformaciones no triviales.
  2. Exclusión de rectangulo: si se activa el modo gráfico por defecto, GM_COMPATIBLE, el sistema excluye los bordes inferior y derecho cuando traza rectángulos.
    Se requiere el modo gráfico GM_ADVANCED si las aplicaciones necesitan trazar rectángulos que incluyan los lados inferior y derecho.
  3. Trazado de arcos: si se selecciona el modo gráfico por defecto, GM_COMPATIBLE, el GDI traza arcos usadondo la dirección de arco actual para el espacio del dispositivo. Con esta convención, los arcos no respetan las transformaciones de página a dispositivo que requieran giros a lo largo de los ejes x e y.
    Si se selecciona el modo gráfico GM_ADVANCED, el GDI siempre traza los arcos en la dirección de las agujas del reloj en el espacio lógico. Esto es equivalente a decir que, en el modo gráfico GM_ADVANCED, tanto los puntos de control del arco como los propios arcos respetan completamente la transformación de mundo a dispositivo del contexto de dispositivo.