1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
/// Draw the trend lines.
///
/// @param hdc Device context to draw into.
/// @param pPoints Array of point coordinates.
/// @param lCount Number of elements in pPoints.
///
static void DrawTrendLine( HDC hdc, POINT* pPoints, long lCount, long lLineWidth, OLE_COLOR col )
{
if ( pPoints == NULL || lCount < 2 )
{
// Less than two points. No line.
return;
}
if ( lLineWidth <= 0 )
{
// No line width.
return;
}
//
LOGBRUSH lb;
lb.lbColor = col,
lb.lbHatch = 0;
lb.lbStyle = BS_SOLID;
//
DWORD dwPenStyle = PS_DOT | PS_GEOMETRIC;
HPEN hPen = ::ExtCreatePen( dwPenStyle,
lLineWidth,
&lb,
0,
NULL );
HPEN hOldPen = (HPEN) ::SelectObject( hdc, hPen );
//
::MoveToEx( hdc, pPoints[0].x, pPoints[0].y, NULL );
//
for ( long lIndex=1; lIndex<lCount; ++lIndex )
{
::LineTo( hdc, pPoints[lIndex].x, pPoints[lIndex].y );
}
::SelectObject( hdc, hOldPen );
::DeleteObject( hPen );
} |
Partager