wingdi.h

Estructura EXTLOGPEN

Definición

typedef struct tagEXTLOGPEN { // exlp  
    UINT     elpPenStyle; 
    UINT     elpWidth; 
    UINT     elpBrushStyle; 
    COLORREF elpColor; 
    LONG     elpHatch; 
    DWORD    elpNumEntries; 
    DWORD    elpStyleEntry[1]; 
} EXTLOGPEN;

La estructura EXTLOGPEN define el estilo, ancho y atributos de pincel para una pluma extendida. Esta estructura se usa por la función GetObject cuando recupera una descripción de una pluma que fue creada por una aplicación mediante la función ExtCreatePen.

Descripción

elpPenStyle: especifica una combinación de tipo de pluma, estilo, estilo de extremo y estilo de unión. El valor de cada categoría puede recuperarse usando el operador de bits AND con la máscara apropiada.

El miembro elpPenStyle, enmascarado con PS_TYPE_MASK contiene uno de los siguientes valores de tipo de pluma:

Valor Significado
PS_GEOMETRIC La pluma es geométrica.
PS_COSMETIC La pluma es cosmética.

El miembro elpPenStyle enmascarado con PS_STYLE_MASK contiene uno de los siguientes valores de estilo de pluma:

Valor Significado
PS_SOLID La pluma es sólida.
PS_DASH La pluma es de trazos.
PS_DOT La pluma es de puntos.
PS_DASHDOT La pluma es de puntos y trazos alternados.
PS_DASHDOTDOT La pluma es de líneas y dobles puntos.
PS_NULL La pluma es invisible.
PS_USERSTYLE Se usa un array de estilo suministrado por el usuario.
PS_INSIDEFRAME La pluma es sólida. Cuando ésta pluma se usa en cualquier función de dibujo del GDI que requiera un rectángulo que sirva como límite, las dimensiones de la figura se reducirán para que se ajusten por completo al interior del rectángulo, teniendo en cuenta el grosor de la pluma. Esto sólo se aplica a plumas geométricas.

La siguiente categoría se aplica sólo a plumas geométricas. El miembro elpPenStyle enmascarado con PS_ENDCAP_MASK contiene uno de los siguientes valores de extremo de línea:

Valor Significado
PS_ENDCAP_ROUND Los extremos de la línea son redondeados.
PS_ENDCAP_SQUARE Los extremos de la línea son cuadrados.
PS_ENDCAP_FLAT Los extremos de la línea planos.

La siguiente categoría se aplica sólo a plumas geométricas. El miembro elpPenStyle enmascarado con PS_JOIN_STYLE contiene uno de los siguientes valores de unión:

Valor Significado
PS_JOIN_BEVEL Las uniones son cortadas.
PS_JOIN_MITER Las uniones son picudas cuando están dentro del límite actual indicado por SetMiterLimit. La unión será cortada cuando se exceda ese límite.
PS_JOIN_ROUND Las uniones serán redondeadas.

elpWidth: especifica la anchura de la pluma. Si el miembro elpPenStyle especifica una pluma geométrica, este valor es la anchura de la línea en unidades lógicas. En otro caso, la pluma es cosmética y este valor es 1.

elpBrushStyle: especifica el estilo de pincel de la pluma. El valor del miembro elpBrushStyle puede ser uno de los siguientes:

Valor Descripción
BS_DIBPATTERN Especifica un pincel de patrón definido por una especificación de mapa de bits independiente del dispositivo (DIB). Si elpBrushStyle es BS_DIBPATTERN, el miembro elpHatch contiene un manipulador a un DIB enpaquetado.
BS_DIBPATTERNPT Especifica un pincel de patrón definido por una especificación de mapa de bits independiente del dispositivo (DIB). Si elpBrushStyle es BS_DIBPATTERNPT, el miembro elpHatch contiene un puntero a un DIB empaquetado.
BS_HATCHED Especifica un pincel rayado.
BS_HOLLOW Especifica un pincel vacío o NULL.
BS_PATTERN Especifica un pincel de patrón definido por un mapa de bits en memoria.
BS_SOLID Especifica un pincel sólido.

elpColor: si elpBrushStyle es BS_SOLID o BS_HATCHED, elpColor especifica el color en el que pinta la pluma. Para BS_HATCHED, las funciones SetBkMode y SetBkColor determinan el color del fondo.

Si elpBrushStyle es BS_HOLLOW o BS_PATTERN, elpColor se ignora.

Si elpBrushStyle es BS_DIBPATTERN o BS_DIBPATTERNPT, la palabra de menor peso de elpColor especifica si los miembros bmiColors de la estructura BITMAPINFO contienen valores explícitos de rojo, verde y azul (RGB) o índices dentro de la paleta lógica actualmente realizada. El valor elpColor debe ser uno de los siguientes:

Valor Significado
DIB_PAL_COLORS La tabla de colores consiste en un array de índices de 16 bits dentro de la paleta lógica actualmente realizada.
DIB_RGB_COLORS La tabla de colores contiene valores RGB literales.

elpHatch: Si elpBrushStyle es BS_PATTERN, elpHatch es un manipulador al mapa de bits que define el patrón.

Si elpBrushStyle es BS_SOLID o BS_HOLLOW, elpHatch es ignorado.

Si elpBrushStyle es BS_DIBPATTERN, el miembro elpHatch es un manipulador a un DIB empaquetado. Para obtener este manipulador, la aplicación debe llamar a la función GlobalAlloc para conseguir un bloque de memoria global y después llenar la memoria con el DIB empaquetado. Un DIB empaquetado consiste en una estructura BITMAPINFO seguida inmediatametne por un array de bytes que definen los puntos del mapa de bits.

Si elpBrushStyle es BS_DIBPATTERNPT, el miembro elpHatch es un puntero a un DIB empaquetado.

Si elpBrushStyle es BS_HATCHED, el miembro elpHatch especifica la orientación de las líneas usadas para crear el rayado. Puede ser uno de los siguientes valores:

Valor Significado
HS_BDIAGONAL Rayado a 45º hacia arriba (de izquierda a derecha)
HS_CROSS Líneas cruzadas horizontales y verticales
HS_DIAGCROSS Rayado a 45º cruzado
HS_FDIAGONAL Rayado a 45º hacia abajo (de izquierda a derecha)
HS_HORIZONTAL Rayado horizontal
HS_VERTICAL Rayado vertical

elpNumEntries: especifica el número de entradas en el array de estilo del miembro elpStyleEntry. Este valor es cero si elpPenStyle especificado no es PS_USERSTYLE.

elpStyleEntry: especifica un array de estilo suministrado por el usuario. El array se especifica con una longitud finita, pero se usa como si se repitiera indefinidamente. La primera entrada en el array especifica la longitud del primer segmento. La segunda especifica la longitud de la primera separación. A partir de ahí, las longitudes de segmentos y separaciones se alternan.

Si elpWidth especifica una pluma geométrica, las longitudes se expresan en unidades lógicas. En otro caso, la pluma es cosmética, y la longitudes se expresan en unidades de dispositivo.