Compartilhar via


CPen::CreatePen

Cria um cosmético lógico ou uma caneta geométrica com o estilo, a largura, e atributos especificados do pincel, e anexá-la ao objeto de 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 o estilo para a caneta. Para obter uma lista de valores possíveis, consulte o parâmetro de nPenStyle no construtor de CPen .

  • nWidth
    Especifica a largura de caneta.

    • Para a primeira versão de CreatePen, se esse valor é 0, a largura em unidades de dispositivo é sempre 1 pixel, independentemente do modo de mapeamento.

    • Para a segunda versão de CreatePen, se nPenStyle é PS_GEOMETRIC, a largura é fornecida em unidades lógicas. Se nPenStyle é PS_COSMETIC, a largura deve ser definida para 1.

  • crColor
    Contém uma cor RGB para a caneta.

  • pLogBrush
    Pontos a estrutura de LOGBRUSH . Se nPenStyle é PS_COSMETIC, o membro de lbColor estrutura de LOGBRUSH especifica a cor de caneta e o membro de lbStyle estrutura de LOGBRUSH deve ser definido como BS_SOLID. Se nPenStyle é PS_GEOMETRIC, todos os membros devem ser usados para especificar os atributos do pincel de caneta.

  • nStyleCount
    Especifica o tamanho, em unidades de palavra, composta de matriz de lpStyle . Esse valor deve ser zero se nPenStyle não é PS_USERSTYLE.

  • lpStyle
    Aponta para uma matriz de valores de palavra composta. O primeiro valor especifica o comprimento do primeiro sublinhado em um estilo definido pelo usuário, dependendo do valor especifica o comprimento do primeiro espaço, e assim por diante. Esse ponteiro deve ser NULO se nPenStyle não é PS_USERSTYLE.

Valor de retorno

Diferente de zero se com êxito, ou zero se o método falhar.

Comentários

A primeira versão de CreatePen inicializa uma caneta com o estilo, a largura, e a cor especificados. A caneta posteriormente pode ser marcada como a caneta atual para qualquer contexto de dispositivo.

As canetas que têm uma largura maior que 1 pixel devem sempre ter o estilo de PS_NULL, de PS_SOLID, ou de PS_INSIDEFRAME .

Se uma caneta tem o estilo de PS_INSIDEFRAME e uma cor que não corresponde a uma cor na tabela de cores lógica, a caneta é desenhada com uma cor hesitada. O estilo da caneta de PS_SOLID não pode ser usado para criar uma caneta com uma cor hesitada. O estilo PS_INSIDEFRAME é idêntico a PS_SOLID se a largura da caneta é menor ou igual a 1.

A segunda versão de CreatePen inicializa uma cosmético lógico ou uma caneta geométrica que tem o estilo, a largura, e atributos especificados do pincel. A largura de uma caneta cosmética é sempre 1; a largura de uma caneta geométrica sempre é especificada em unidades do mundo. Depois que um aplicativo cria uma caneta lógica, pode selecionar qual caneta em um contexto de dispositivo chamar a função de CDC::SelectObject . Depois que uma caneta está selecionada em um contexto de dispositivo, pode ser usada para desenhar linhas e curvas.

  • Se nPenStyle é PS_COSMETIC e PS_USERSTYLE, as entradas na matriz de lpStyle especificam comprimentos dos traços e espaços em unidades de estilo. Uma unidade de estilo é definida pelo dispositivo em que a caneta é usada para desenhar uma linha.

  • Se nPenStyle é PS_GEOMETRIC e PS_USERSTYLE, as entradas na matriz de lpStyle especificam comprimentos dos traços e espaços em unidades lógicas.

  • Se nPenStyle é PS_ALTERNATE, a unidade de estilo é ignorada e outro cada pixel é definido.

Quando um aplicativo não requer uma caneta determinada, deve chamar a função de membro de CGdiObject::DeleteObject ou destruir o objeto de CPen assim que o recurso é mais em uso. Um aplicativo não deve excluir uma caneta quando a caneta está selecionada em um contexto de dispositivo.

Exemplo

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

Cabeçalho: afxwin.h

Consulte também

Referência

Classe CPen

Gráfico da hierarquia

CPen::CreatePenIndirect

CPen::CPen

CGdiObject::DeleteObject

LOGBRUSH