Compartilhar via


Working with Pens

Windows Mobile SupportedWindows Embedded CE Supported

9/9/2008

Em Windows Embedded CE, um caneta é um objeto gráfico para desenhar linhas. Desenho aplicativos usam canetas para desenhar linhas à mão livre e linhas retas. Aplicativos design Computer-aided (CAD) usam canetas para desenhar linhas visíveis, seção Linhas, centralizar linhas e assim por diante. Processamento Word e área de trabalho editoração aplicativos usam canetas para desenhar bordas e regras. Aplicativos de planilha usam canetas para designar as tendências em gráficos e para estrutura de tópicos barra gráficos e gráficos de pizza.

Windows Embedded CE stock canetas incluem o BLACK_PEN e o WHITE_PEN, que desenhar um sólido, 1 - pixel - linha grande em seu respectivo cor e o NULL_PEN, que não desenhar. Você obtém a stock pens com o GetStockObject função.

Você chamar o CreatePen Ou CreatePenIndirect função para criar um personalizado caneta com um exclusivo cor, largura ou estilo caneta.

A seguinte tabela mostra os estilos caneta com suporte por Windows Embedded CE.

Estilo da caneta Descrição

PS_SOLID

Desenha uma linha sólida.

PS_DASH

Desenha um linha tracejada.

PS_NULL

Não desenhar uma linha.

Windows Embedded CE oferece suporte a canetas ampla e tracejado pens, mas não canetas suporte pontilhada, dentro de canetas quadro, canetas geométricas, caneta endcap estilos ou canetas que estão ambos ampla e tracejado.

Você pode criar uma caneta com um exclusivo cor armazenando o valor RGB que especifica a cor que você desejar em um COLORREF valor e passar esse valor para o CreatePen Ou CreatePenIndirect função. No caso de CreatePenIndirect, o COLORREF valor é incorporado a LOGPEN estrutura, que é usada pelo CreatePenIndirect.

Observação

A caneta ampla requer computação GDI significativa.Para melhorar o desempenho de um aplicativo de texto manuscrito, use um padrão caneta tamanho.

O seguinte exemplo de código mostra como usar funções caneta.

Observação

Para fazer o seguinte exemplo de código mais fácil de ler, verificação de erro não está incluído.Não usar este exemplo de código em uma configuração versão, a menos que você tenha modificado para incluir Seguro manipulação de erro.

#define NUMPT  200

HDC hDC;            // Handle to the display device context 
HPEN hPen,          // Handle to the new pen object  
     hOldPen;       // Handle to the old pen object 
RECT rect;          // A RECT structure that contains the window's 
                    // client area coordinates
int index,          
    iCBHeight;      // Command bar height
POINT ptAxis[2],    // Two dimensional POINT structure array
     ptSine[NUMPT]; // 200 dimensional POINT structure array
static COLORREF g_crColor[] = {
                        0x000000FF,0x0000FF00,0x00FF0000,0x0000FFFF,
                        0x00FF00FF,0x00FFFF00,0x00FFFFFF,0x00000080,
                        0x00008000,0x00800000,0x00008080,0x00800080,
                        0x00808000,0x00808080,0x000000FF,0x0000FF00,
                        0x00FF0000,0x0000FFFF,0x00FF00FF,0x00FFFF00};

// Retrieve a handle to a display device context for the client 
// area of the window (hwnd). 
if (!(hDC = GetDC (hwnd)))
  return;

// Retrieve the coordinates of the window's client area. 
GetClientRect (hwnd, &rect);

// Retrieve the height of the command bar in pixels. 
iCBHeight = CommandBar_Height (g_hwndCB);

// Assign the axis points coordinates in pixels.
ptAxis[0].x = 0;
ptAxis[0].y = iCBHeight + (rect.bottom - iCBHeight) / 2;
ptAxis[1].x = rect.right - 1;
ptAxis[1].y = ptAxis[0].y;

// Assign the sine wave points coordinates in pixels.
for (index = 0; index < NUMPT; ++index)
{
  ptSine[index].x = index * rect.right / NUMPT;
  ptSine[index].y = (long) (iCBHeight + \
                            (rect.bottom - iCBHeight) / 2 * \
                            (1 - sin (8 * 3.14159 * index / NUMPT)));
}

// Create a dash pen object and select it.
hPen = CreatePen (PS_DASH, 1, g_crColor[5]);
hOldPen = SelectObject (hDC, hPen);

// Draw a straight line connecting the two points.
Polyline (hDC, ptAxis, 2);

// Select the old pen back into the device context.
SelectObject (hDC, hOldPen);

// Delete the pen object and free all resources associated with it. 
DeleteObject (hPen);

// Create a solid pen object and select it.
hPen = CreatePen (PS_SOLID, 3, g_crColor[5]);
hOldPen = SelectObject (hDC, hPen);

// Draw a sine wave shaped polyline.
Polyline (hDC, ptSine, NUMPT);

// Select the old pen back into the device context.
SelectObject (hDC, hOldPen);

// Delete the pen object and free all resources associated with it. 
DeleteObject (hPen);

// Release the device context.
ReleaseDC (hwnd, hDC);

return;

See Also

Concepts

Graphics Device Interface (GDI)