源代码如下:
static float x[n+1]={0,50,100,150,200,250,300,350,400};
static float y[n+1]={0,60,60,80,-100,0,80,-40,80};
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int gmode,errorcode;
int x0,y0,x1,y1,k,j;
float X,Y; float u;
Form1->Canvas->Pen->Color = RGB(250,0,0); //绘制折线
Form1->Canvas->MoveTo(x[0],-y[0]+100);
for(k=1;k<=n;k++)
{
Form1->Canvas->LineTo(x[k],-y[k]+100);
}
Form1->Canvas->Pen->Color = RGB(0,250,255);
for(k=0;k<=n-2;k++) //绘制B样曲线
{
X=(x[k]+x[k+1])/2;
Y=(y[k]+y[k+1])/2;
Form1->Canvas->MoveTo(X,-Y+100);
u=0.0;
for(j=1;j<=m;j++)
{
u=u+1.0/m;
X=u*u/2*(x[k]-2*x[k+1]+x[k+2])+u*(x[k+1]-x[k])+(x[k]+x[k+1])/2;
Y=u*u/2*(y[k]-2*y[k+1]+y[k+2])+u*(y[k+1]-y[k])+(y[k]+y[k+1])/2;
Form1->Canvas->LineTo(X,-Y+100);
}
}
}
//---------------------------------------------------------------------------