Compartir a través de


CPen::CreatePen

Crea un cosmético lógico o un lápiz geométricos con el estilo, el ancho, y los atributos especificados del pincel, y lo asocia al objeto CPen .

BOOL CreatePen( 
   int nPenStyle, 
   int nWidth, 
   COLORREF crColor  
); 
BOOL CreatePen( 
   int nPenStyle, 
   int nWidth, 
   const LOGBRUSH* pLogBrush, 
   int nStyleCount = 0, 
   const DWORD* lpStyle = NULL  
);

Parámetros

  • nPenStyle
    Especifica el estilo del lápiz. Para obtener una lista de valores posibles, vea el parámetro nPenStyle en el constructor CPen .

  • nWidth
    Especifica el ancho del lápiz.

    • Para la primera versión CreatePen, si este valor es 0, el ancho en unidades es siempre 1 píxel, independientemente del modo de asignación.

    • Para la segunda versión CreatePen, si nPenStyle es PS_GEOMETRIC, el ancho se da en unidades lógicas. Si nPenStyle es PS_COSMETIC, el ancho establecido en 1.

  • crColor
    Contiene RGB color para el lápiz.

  • pLogBrush
    Señala una estructura LOGBRUSH . Si nPenStyle es PS_COSMETIC, el miembro lbColor de la estructura LOGBRUSH especifica el color del lápiz y el miembro lbStyle de la estructura LOGBRUSH establecido en BS_SOLID. Si nPenStyle es PS_GEOMETRIC, todos los miembros deben ser utilizados para especificar atributos de pincel de lápiz.

  • nStyleCount
    Especifica la longitud, en unidades de word doble, de la matriz lpStyle . Este valor debe ser cero si nPenStyle no es PS_USERSTYLE.

  • lpStyle
    Señala a una matriz de valores de word doble. El primer valor especifica la longitud del primer guión 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 nPenStyle no es PS_USERSTYLE.

Valor devuelto

Distinto de cero si es correcto, o cero si el método.

Comentarios

La primera versión CreatePen inicializa un lápiz con el estilo, el ancho, y color especificados. El lápiz puede seleccionarse posteriormente como el lápiz actual para cualquier contexto de dispositivo.

Lápices que tienen un ancho mayor que 1 píxel siempre deben tener el estilo PS_NULL, PS_SOLID, o PS_INSIDEFRAME .

Si un lápiz tiene el estilo PS_INSIDEFRAME y color que no coincide con el color de la paleta de colores lógica, el lápiz se dibuja con el color interpolado. El estilo de lápiz PS_SOLID no se puede utilizar para crear un lápiz con el color interpolado. El estilo PS_INSIDEFRAME es idéntico a PS_SOLID si el ancho del lápiz es menor o igual que 1.

La segunda versión CreatePen inicializa un cosmético lógico o un lápiz geométrico que tiene el estilo, el ancho, y los atributos especificados del pincel. El ancho de un lápiz cosmético siempre es 1; el ancho de un lápiz geométricos siempre se especifica en unidades universal. Después de que una aplicación realiza un lápiz lógico, puede seleccionar ese lápiz en un contexto de dispositivo llamando a la función CDC::SelectObject . Después de que un lápiz seleccionado en un contexto de dispositivo, se puede utilizar para dibujar líneas y curvas.

  • Si nPenStyle es PS_COSMETIC y PS_USERSTYLE, las entradas de la matriz lpStyle especifican longitudes de guiones y espacios en unidades de estilo. Una unidad de estilo se define mediante el dispositivo en el que el lápiz se utiliza para dibujar una línea.

  • Si nPenStyle es PS_GEOMETRIC y PS_USERSTYLE, las entradas de la matriz lpStyle especifican longitudes de guiones y espacios en unidades lógicas.

  • Si nPenStyle es PS_ALTERNATE, se omite la unidad de estilo y se establece cada otro píxel.

Cuando una aplicación no necesita un lápiz determinado, debe llamar a la función miembro CGdiObject::DeleteObject o destruir el objeto CPen por lo que el recurso ya no se utiliza. Una aplicación no debe eliminar un lápiz cuando el lápiz está seleccionado en un contexto de dispositivo.

Ejemplo

CPen myPen1, myPen2;

// Create a solid red pen of width 2.
myPen1.CreatePen(PS_SOLID, 2, RGB(255,0,0));

// Create a geometric pen.
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID;
logBrush.lbColor = RGB(0,255,0);
myPen2.CreatePen(PS_DOT|PS_GEOMETRIC|PS_ENDCAP_ROUND, 2, &logBrush);   

Requisitos

Header: afxwin.h

Vea también

Referencia

CPen Class

Gráfico de jerarquías

CPen::CreatePenIndirect

CPen::CPen

CGdiObject::DeleteObject

LOGBRUSH