如何画一条连续的贝塞尔曲线?
我做的曲线不光滑,应当如何做呢?
下面是我做的小例子,请大侠们指点!
unit Unit1; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
m_points:array[1..100] of TPoint;
m_n:integer;//点的数目
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject);
begin
self.m_n:=0;
end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if self.m_n>=100 then exit;
self.m_points[self.m_n].x:=x;
self.m_points[self.m_n].y:=y;
self.Repaint;
self.Canvas.PolyBezier(Slice(self.m_points, self.m_n));
self.m_n:=self.m_n+1;
end; end.
我做的曲线不光滑,应当如何做呢?
下面是我做的小例子,请大侠们指点!
unit Unit1; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
m_points:array[1..100] of TPoint;
m_n:integer;//点的数目
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject);
begin
self.m_n:=0;
end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if self.m_n>=100 then exit;
self.m_points[self.m_n].x:=x;
self.m_points[self.m_n].y:=y;
self.Repaint;
self.Canvas.PolyBezier(Slice(self.m_points, self.m_n));
self.m_n:=self.m_n+1;
end; end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货