最佳答案:
此函数用于画贝赛尔样条曲线。贝赛尔样条是一种非常优美的曲线,广泛应用于计算机图形学中。函数PolyBezier和PolyBezierTo用于绘制这种样条曲线。一条贝赛尔样条由4个定义点定义:两个端点和两个控制点。
详情介绍
此函数用于画贝赛尔样条曲线。贝赛尔样条是一种非常优美的曲线,广泛应用于计算机图形学中。函数PolyBezier和PolyBezierTo用于绘制这种样条曲线。一条贝赛尔样条由4个定义点定义:两个端点和两个控制点。

- 中文名
- PolyBezier
- 参数
- hdc
- 原型
- BOOL PolyBezier
PolyBezier简介
PolyBezier
● 说明
此函数用于画贝赛尔样条曲线。贝赛尔样条是一种非常优美的曲线,广泛应用于计算机图形学中。函数PolyBezier和PolyBezierTo用于绘制这种样条曲线。一条贝赛尔样条由4个定义点定义:两个端点和两个控制点。

● 原型
BOOL PolyBezier(HDC hdc, ConST POINT *lppt, DWORD cPoints);
● 参数
hdc:指定的设备环境句柄。

lppt:POINT结构数组的指针,包括了样条端点和控制点的坐标,其顺序是起点的坐标、起点的控制点的坐标、终点的控制点的坐标和终点的坐标。
cPoints:指明数组中的点的个数。
● 返回值
若函数调用成功,则返回非零,否则返回零。
PolyBezier举例说明
#include<windows.h>LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,int iCmdShow){static TCHAR szAppName = TEXT("Bezier");HWND hwnd;MSG msg;WNDCLASS wndclass;wndclass.style=CS_HREDRAW|CS_VREDRAW;wndclass.lpfnWndProc=WndProc;wndclass.cbClsExtra=0;wndclass.cbWndExtra=0;wndclass.hInstance=hInstance;wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName=NULL;wndclass.lpszClassName=szAppName;if(!RegisterClass(&wndclass)){MessageBox(NULL,TEXT("Program requires Windows NT!"),szAppName,MB_ICONERROR);return 0;}hwnd=CreateWindow(szAppName,TEXT("Bezier Splines"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,iCmdShow);UpdateWindow(hwnd);while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}returnmsg.wParam;}voidDrawBezier(HDC hdc,POINT apt){PolyBezier(hdc,apt,4);MoveToEx(hdc,apt.x,apt.y,NULL);LineTo(hdc,apt.x,apt.y);MoveToEx(hdc,apt.x,apt.y,NULL);LineTo(hdc,apt.x,apt.y);}LRESULTCALLBACKWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){static int cxClient,cyClient;HDC hdc;static POINT apt;PAINTSTRUCT ps;switch(message){case WM_SIZE:cxClient=LOWORD(lParam);cyClient=HIWORD(lParam);apt.x=cxClient/4;apt.y=cyClient/2;apt.x=cxClient/2;apt.y=cyClient/4;apt.x=cxClient/2;apt.y=3*cyClient/4;apt.x=3*cxClient/4;apt.y=cyClient/2;break;case WM_LBUTTONDOWN:case WM_RBUTTONDOWN:case WM_MOUSEMOVE:if(wParam&MK_LBUTTON||wParam&MK_RBUTTON){hdc=GetDC(hwnd);SelectObject(hdc,GetStockObject(WHITE_PEN));DrawBezier(hdc,apt);if(wParam&MK_LBUTTON){apt.x=LOWORD(lParam);apt.y=HIWORD(lParam);}if(wParam&MK_RBUTTON){apt.x=LOWORD(lParam);apt.y=HIWORD(lParam);}SelectObject(hdc,GetStockObject(BLACK_PEN));DrawBezier(hdc,apt);ReleaseDC(hwnd,hdc);}return 0;case WM_PAINT:InvalidateRect(hwnd,NULL,TRUE);hdc=BeginPaint(hwnd,&ps);DrawBezier(hdc,apt);EndPaint(hwnd,&ps);return 0;case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hwnd,message,wParam,lParam);}结果显示


