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.