图形基础(二十六)

2010-12-30 21:10:52 · 作者: · 浏览: 40674
apt, 5) ;

最後一个参数是点的数目。我们还可以使用(sizeof (apt) / sizeof (POINT))来表示这个值。Polyline与一个MoveToEx函式後面加几个LineTo函式的效果相同,但是,Polyline既不使用也不改变目前位置。PolylineTo有些不同,这个函式使用目前位置作为开始点,并将目前位置设定为最後一根线的终点。下面的程式码画出与上面所示一样的矩形:

MoveToEx (hdc, apt[0].x, apt[0].y, NULL) ;
PolylineTo (hdc, apt + 1, 4) ;

您可以对几条线使用Polyline和PolylineTo,这些函式在绘制复杂曲线最有用了。您使用由几百甚至几千条线组成的极短线段,把它们连在一起就像一条曲线一样。例如,画正弦波就是这样的,程式5-2所示的SINEWAVE程式显示了如何做到这一点。

 程式5-2 SINEWAVE
SINEWAVE.C
/*-------------------------------------------------------------------
SINEWAVE.C -- Sine Wave Using Polyline
(c) Charles Petzold, 1998
---------------------------------------------------------------------*/
#include <windows.h>
#include <math.h>

#define NUM 1000
#define TWOPI (2 * 3.14159)
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("SineWave") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc= WndProc ;
wndclass.cbCl