现在的位置: 首页 > 综合 > 正文

Delphi 的绘图功能[4] – 圆弧类图形

2012年07月02日 ⁄ 综合 ⁄ 共 1569字 ⁄ 字号 评论关闭
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  btn: TButton;
const
  y1 = 10;
  y2 = 80;


{先设置画笔画刷}
procedure TForm1.FormCreate(Sender: TObject);
begin
  Canvas.Pen.Width := 2;
  Canvas.Pen.Color := clRed;
  Canvas.Brush.Color := clWhite;
end;


{绘制椭圆; 椭圆的参数和矩形是一样的}
procedure TForm1.Button1Click(Sender: TObject);
begin
  btn := TButton(Sender);
  Canvas.Ellipse(btn.Left, y1, btn.Left+btn.Width, y2);
end;


{根据矩形结构绘制椭圆}
procedure TForm1.Button2Click(Sender: TObject);
var
  R: TRect; {定义一个矩形结构}
begin
  btn := TButton(Sender);
  R := Rect(btn.Left, y1, btn.Left+btn.Width, y2);
  Canvas.Ellipse(R);
end;


{绘制扇形}
procedure TForm1.Button3Click(Sender: TObject);
begin
  btn := TButton(Sender);
  Canvas.Pie(
    btn.Left, y1,                             {矩形区域左上角}
    btn.Left + btn.Width, y2,                 {矩形区域右下角}
    btn.Left + btn.Width, y1 + (y2-y1) div 2, {扇形起点}
    btn.Left + btn.Width div 2, y1            {扇形终点}
  );
end;


{绘制弦, 参数同上}
procedure TForm1.Button4Click(Sender: TObject);
begin
  btn := TButton(Sender);
  Canvas.Chord(
    btn.Left, y1,
    btn.Left + btn.Width, y2,
    btn.Left + btn.Width, y1 + (y2-y1) div 2,
    btn.Left + btn.Width div 2, y1
  );
end;


{绘制弧线, 参数同上}
procedure TForm1.Button5Click(Sender: TObject);
begin
  btn := TButton(Sender);
  Canvas.Arc(
    btn.Left, y1,
    btn.Left + btn.Width, y2,
    btn.Left + btn.Width, y1 + (y2-y1) div 2,
    btn.Left + btn.Width div 2, y1
  );
end;

end.

//效果图:



抱歉!评论已关闭.