六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Window畫圖程序中畫曲線的容易完成

[摘要]下面是很入以前的一個程序,模仿Windows的畫圖程序中畫曲線.其實原理簡單得要命 ,就是一個PolyBezier函數.那一位有興趣的可以封裝成一個類,方便以后用.unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Cl...
下面是很入以前的一個程序,模仿Windows的畫圖程序中畫曲線.其實原理簡單得要命 ,就是一個PolyBezier函數.
那一位有興趣的可以封裝成一個類,方便以后用.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TStep=(sStartEnd,sCtrl1,sCtrl2);
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
    isDown:Boolean;
    isOK:Boolean;  //標識一次Bezier線的繪制是否完成
    Step:TStep; //指示到那個階段了
    StartP:TPoint;  //以下是四個點坐標
    EndP:TPoint;
    CtrP1:TPoint;
    CtrP2:TPoint;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  self.DoubleBuffered:=true;
  isDown:=False;
  Step:=sStartEnd;
  isOK:=False;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  isDown:=true;
  if Button=mbLeft then
  begin
    if (Step=sStartEnd) then
    begin
      StartP.X:=X;
      StartP.Y:=Y;
      EndP:=Point(X,Y);
      isOK:=False;
    end
    else if (Step=sCtrl1)  then
    begin
      CtrP1:=Point(X,Y);
      CtrP2:=Point(X,Y);
    end
    else if (Step=sCtrl2)  then
    begin
      CtrP2:=Point(X,Y);
    end;
  end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if isDown and (Shift=[ssLeft]) then
  begin
    if (Step=sStartEnd) then
    begin
      EndP.X:=X;
      EndP.Y:=Y;
    end
    else if Step=sCtrl1 then
    begin
      CtrP1:=Point(X,Y);
      CtrP2:=Point(X,Y);
    end
    else if (Step=sCtrl2)  then
    begin
      CtrP2:=Point(X,Y);
    end;
    self.Invalidate;
  end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if isDown and (Button=mbLeft) then
  begin
    isDown:=False;
    if Step=sStartEnd then Step:=sCtrl1
    else if Step=sCtrl1 then Step:=sCtrl2
    else if Step=sCtrl2 then begin Step:=sStartEnd; isOK:=True; end;
  end;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  if not isOK then
  begin
    if Step=sStartEnd then
    begin
      self.Canvas.MoveTo(StartP.X,StartP.Y);
      self.Canvas.LineTo(EndP.X,EndP.Y);
    end
    else begin
     Self.Canvas.PolyBezier([StartP,CtrP1,CtrP2,EndP]);
    end;
  end else begin
    Self.Canvas.PolyBezier([StartP,CtrP1,CtrP2,EndP]);
  end;
end;

end.




主站蜘蛛池模板: 色偷偷亚洲女性天堂 | 天堂8中文在线最新版在线 天堂8中文在线bt | 日韩一及片| 最近韩国高清免费 hd | 日韩视频在线播放 | 亚洲伊人久久大香线蕉结合 | 亚洲啪啪网站 | 五月激情啪啪 | 亚洲免费mv | 亚洲 另类色区 欧美日韩 | 日韩a在线 | 一级做a爰片性色毛片小说 一级做a爰片性色毛片思念网 | 日本欧美人xxxxx在线观看 | 七七七久久久久人综合 | 色一色在线观看视频网站 | 日本在线天堂 | 欧美视频福利 | 四虎影视ww5234hucomww网站 | 日韩黄网 | 天堂bt| 色迷迷网免费站视频在线观看 | 日日摸夜夜添夜夜添特色大片 | 日韩 欧美 亚洲 中文字幕 | 人人草网| 欧美桃色视频 | 亚洲第一网站免费视频 | 午夜免费视频观看在线播放 | 亚洲乱码中文字幕久久 | 午夜小视频男女在线观看 | 天天玩天天操 | 欧美一级在线免费观看 | 日本视频中文字幕 | 伊人久久免费视频 | 五月婷婷七月丁香 | 日日噜噜噜夜夜爽爽狠狠69 | 日本最新免费网站 | 在线看片欧美 | 青娱乐极品视频在线 | 日本在线观看视频网站 | 青青青草视频 | 天天干天天操天天干 |