VC++ MFC 绘制曲线

2025-02-23 05:47:23
推荐回答(2个)
回答1:

在MFC中并没有现成的类或函数实现这一功能。不过有类似的函数,比如:
CDC::PolylineTo
BOOL PolylineTo( const POINT* lpPoints, int nCount );

CDC::Polyline
BOOL Polyline( LPPOINT lpPoints, int nCount );

你可以利用这两个函数,自己编写一个类或函数,实现你想要的画平滑曲线的功能。示例:
折线的作用示例——绘制一条正弦曲线
#include
#define PI 3.1415926
#define SEGMENT 500
void CMainWindow::OnPaint()
{
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
int nWidth = rect.Width();
int nHeight = rect.Height();
CPoint aPoint[SEGMENT];
for (int i=0; i {
aPoint[i].x = (i * nWidth) / SEGMENT;
aPoint[i].y = (int) ((nHeight / 2) * (1 - (sin((2*PI*i)/SEGMENT))));
}
dc.Polyline(aPoint,SEGMENT);
}

回答2:

在MFC中并没有现成的类或函数实现这一功能。不过有类似的函数,比如:
CDC::PolylineTo
BOOL PolylineTo( const POINT* lpPoints, int nCount );

CDC::Polyline
BOOL Polyline( LPPOINT lpPoints, int nCount );

你可以利用这两个函数,自己编写一个类或函数,实现你想要的画平滑曲线的功能。示例:
折线的作用示例——绘制一条正弦曲线
#include
#define PI 3.1415926
#define SEGMENT 500
void CMainWindow::OnPaint()
{
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
int nWidth = rect.Width();
int nHeight = rect.Height();
CPoint aPoint[SEGMENT];
for (int i=0; i {
aPoint[i].x = (i * nWidth) / SEGMENT;
aPoint[i].y = (int) ((nHeight / 2) * (1 - (sin((2*PI*i)/SEGMENT))));
}
dc.Polyline(aPoint,SEGMENT);
}