Uso di penne
Articolo 12/06/2023
3 contributori
Commenti e suggerimenti
In questo articolo
Questa sezione contiene codice di esempio che illustra l'aspetto delle linee disegnate usando vari stili e attributi della penna.
LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam,
LPARAM lParam)
{
PAINTSTRUCT ps;
LOGBRUSH lb;
RECT rc;
HDC hdc;
int i;
HGDIOBJ hPen = NULL ;
HGDIOBJ hPenOld;
DWORD dwPenStyle[] = {
PS_DASH,
PS_DASHDOT,
PS_DOT,
PS_INSIDEFRAME,
PS_NULL,
PS_SOLID
};
UINT uHatch[] = {
HS_BDIAGONAL,
HS_CROSS,
HS_DIAGCROSS,
HS_FDIAGONAL,
HS_HORIZONTAL,
HS_VERTICAL
};
switch (uMsg)
{
case WM_PAINT:
{
GetClientRect(hWnd, &rc);
rc.left += 10 ;
rc.top += 10 ;
rc.bottom -= 10 ;
lb.lbStyle = BS_SOLID;
lb.lbColor = RGB(255 ,0 ,0 );
lb.lbHatch = 0 ;
hdc = BeginPaint(hWnd, &ps);
for (i = 0 ; i < 6 ; i++)
{
hPen = ExtCreatePen(PS_COSMETIC | dwPenStyle[i],
1 , &lb, 0 , NULL );
hPenOld = SelectObject(hdc, hPen);
MoveToEx(hdc, rc.left + (i * 20 ), rc.top, NULL );
LineTo(hdc, rc.left + (i * 20 ), rc.bottom);
SelectObject(hdc, hPenOld);
DeleteObject(hPen);
}
rc.left += 150 ;
for (i = 0 ; i < 6 ; i++)
{
lb.lbStyle = BS_HATCHED;
lb.lbColor = RGB(0 ,0 ,255 );
lb.lbHatch = uHatch[i];
hPen = ExtCreatePen(PS_GEOMETRIC,
5 , &lb, 0 , NULL );
hPenOld = SelectObject(hdc, hPen);
MoveToEx(hdc, rc.left + (i * 20 ), rc.top, NULL );
LineTo(hdc, rc.left + (i * 20 ), rc.bottom);
SelectObject(hdc, hPenOld);
DeleteObject(hPen);
}
EndPaint(hWnd, &ps);
}
break ;
case WM_DESTROY:
DeleteObject(hPen);
PostQuitMessage(0 );
break ;
default :
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return FALSE;
}