wingdi.h


ExtCreatePen

Crea una pluma lógica cosmética o geométrica que tiene el estilo, anchura y atributos de pincel especificados.

Sintaxis

HPEN ExtCreatePen(
    DWORD dwPenStyle,      // estilo de pluma
    DWORD dwWidth,         // anchura de la pluma
    CONST LOGBRUSH * lplb, // Dirección de la estructura con los atributos del pincel 
    DWORD dwStyleCount,    // longitud del array que contiene los bits de estilo personalizados
    CONST DWORD * lpStyle  // array opcional de bits de estilo personalizados
   );

Parámetros:

dwPenStyle: especifica una combinación de tipo, estilo, extremos y uniones. Los valores de cada categoría se combinan usando el operador OR de bits (|).

La pluma puede tener uno de los siguientes valores:

Tipo Descripción
PS_GEOMETRIC La pluma es geométrica.
PS_COSMETIC La pluma es cosmética.

El estilo de pluma puede ser uno de los siguientes valores:

Estilo Descripción
PS_ALTERNATE Windows NT: La pluma muestra un pixel cada dos. (Este estilo sólo es aplicable a plumas cosméticas.)
Windows 95: No soportado.
PS_SOLID La pluma es sólida.
PS_DASH La pluma trazará líneas de trazos.
Sólo en Windows 95: este estilo no está soportado para líneas geométricas.
PS_DOT La pluma trazará líneas de trazos.
Sólo en Windows 95: este estilo no está soportado para líneas geométricas.
PS_DASHDOT La pluma alterna trazos y puntos.
Sólo en Windows 95: este estilo no está soportado para líneas geométricas.
PS_DASHDOTDOT La pluma alterna trazos y dobles puntos.
Sólo en Windows 95: este estilo no está soportado para líneas geométricas.
PS_NULL La pluma es invisible.
PS_USERSTYLE Windows NT: la pluma usa un array suministrado por el usuario.
Windows 95: No soportado.
PS_INSIDEFRAME La pluma es sólida. Cuando se usa esta pluma en cualquier interfaz de dispositivo gráfico (GDI) la función de trazado que requiera un rectángulo de límite, las dimensiones de la figura son encogerán de modo que entre por completo en el rectángulo de borde, contando con el grosor de la pluma. Este estilo se aplica sólo a plumas geométricas.

Los extremos de línea se aplican sólo a plumas geométricas. El valor de extremo de línea puede ser uno de los siguientes:

Extremo Descripción
PS_ENDCAP_ROUND Los extremos son redondeados.
PS_ENDCAP_SQUARE Los extremos son cuadrados.
PS_ENDCAP_FLAT Los extremos son planos.

Las uniones sólo se aplican a plumas geométricas. El tipo de unión puede ser uno de los siguientes valores:

Unión de líneas Descripción
PS_JOIN_BEVEL Las uniones son cortadas.
PS_JOIN_MITER Las uniones son picudas cuando están dentro del límite actual definido por la función SetMiterLimit. Si se excede ese límite, la unión es cortada.
PS_JOIN_ROUND Las uniones son redondeadas.

Sólo en Windows 95: Los estilos PS_ENDCAP_ROUND, PS_ENDCAP_SQUARE, PS_ENDCAP_FLAT, PS_JOIN_BEVEL, PS_JOIN_MITER y PS_JOIN_ROUND son soportados sólo por plumas geométricas cuando se usan para trazar caminos (paths).

dwWidth: especifica la anchura de la pluma. Si el parámetro dwPenStyle es PS_GEOMETRIC, la anchura se toma en unidades lógicas. Si dwPenStyle es PS_COSMETIC, la anchura debe ser 1.

lplb: apunta a una estructura LOGBRUSH. Si dwPenStyle es PS_COSMETIC, el miembro lbColor especifica el color de la pluma y el miembro lbStyle debe ser puesto a BS_SOLID. Si dwPenStyle es PS_GEOMETRIC, todos los miembros deben ser usados para especificar los atributos del pincel de la pluma.

dwStyleCount: especifica la longitud en unidades de dobles palabras, del array lpStyle. Este valor debe ser cero si dwPenStyle no es PS_USERSTYLE.

lpStyle: apunta a un array de valores doble palabra. El primer valor especifica la longitud del primer trazo en un estilo definido por el usuario, el segundo valor especifica la longitud del primer espacio, y así sucesivamente. Este puntero debe ser NULL si dwPenStyle no es PS_USERSTYLE.

Valor de retorno

Si la función tiene éxito, el valor de retorno es un manipulador que identifica la pluma lógica.

Si la función falla, el valor de retorno es cero.

Observaciones

Una pluma geométrica puede tener cualquier anchura y puede tener cualquier atributo de un pincel, como vaciados y patrones. Una pluma cosmética sólo puede tener el ancho de un pixel y debe ser de un color sólido, pero las plumas cosméticas son generalmente más rápidas que las geométricas.

La anchura de una pluma geométrica siempre se especifica en unidades universales. La anchura de una pluma cosmética es siempre 1.

Los extremos de línea y las uniones sólo se especifican para plumas geométricas.

Después de que una aplicación crea una pluma lógica, puede seleccionarla en un contexto de dispositivo usando la función SelectObject. Después de que una pluma ha sido seleccionada en un contexto de dispositivo, puede ser usada para trazar líneas y curvas.

Si dwPenStyle es PS_COSMETIC y PS_USERSTYLE, los valores en el array lpStyle especifican longitudes de trazos y espacios en unidades de estilo. Una unidad de estilo se define por un dispositivo donde se usa la pluma para trazar una línea.

Si dwPenStyle es PS_GEOMETRIC y PS_USERSTYLE, los valores en el array lpStyle especifican longitudes de trazos y espacios en unidades lógicas.

Si dwPenStyle es PS_ALTERNATE, se ignoran las unidades de estilo y se muestra siempre un pixel de cada dos.

Si el miembro lbStyle de la estructura LOGBRUSH apuntada por lplb es BS_PATTERN, el mapa de bits apuntado por el miembro lbHatch de dicha estructura no puede ser una sección dib. Una sección dib es un mapa de bits creado por CreateDibSection. Si ese mapa de bits es una sección dib, la función falla.

Cuando la aplicación no necesite la pluma creada, debe llamar a la función DeleteObject para borrarla.