Bresenham算法

来源:互联网 发布:数据库系统工程师难吗 编辑:程序博客网 时间:2024/04/27 22:40

{****************************************}
{Bresenham,the line paint                }
{Designed by whbo,copyright (c) 2003-2004}
{Get in touch with me .Tel:07102690635   }
{email:wanghongbottt123@163.com          }
{****************************************}
unit unitline;

interface

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

type
  Tlinefrm = class(TForm)
    Button1: TButton;
    input1: TEdit;
    input3: TEdit;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    input2: TEdit;
    input4: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure input1KeyPress(Sender: TObject; var Key: Char);
    procedure input2KeyPress(Sender: TObject; var Key: Char);
    procedure input3KeyPress(Sender: TObject; var Key: Char);
    procedure input4KeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  linefrm: Tlinefrm;

implementation

uses unitshow;

{$R *.dfm}
procedure Tlinefrm.Button1Click(Sender: TObject);
 var
x0,y0,x1,y1,x,y,i,dx,dy,e:integer;
//x0,y0是起点,x1,y1是终点,x,y做循环是用。
begin
    showfrm.Visible:=true;
    showfrm.Show;
    if (input1.Text <>'') and (input2.Text <>'') and (input3.Text <>'') and (input4.Text <>'') then
  begin
     x1:=strtoint(input3.Text);
     y1:=strtoint(input4.Text);
     x0:=strtoint(input1.Text);
     y0:=strtoint(input2.Text);
     dx:=x1-x0;
     dy:=y1-y0;
     e:=-dx;
     x:=x0;
     y:=y0;
     for i:=0 to dy  do
       begin
       showfrm.Canvas.Pixels[x,y]:=clred;
       x:=x+1;
       e:=e+2*dy;
        if(e>=0) then
           begin
             y:=y+1;
            e:=e-2*dx;
           end;
       end;
     end;
     if (input1.Text ='') or (input2.Text ='') or(input3.Text ='') or (input4.Text ='') then
       begin
         showmessage('没有数据输入');
         showfrm.Visible:=false;
       end;
end;
procedure Tlinefrm.input1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
input2.SetFocus;
end;

procedure Tlinefrm.input2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
input3.SetFocus;
end;

procedure Tlinefrm.input3KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
input4.SetFocus;
end;

procedure Tlinefrm.input4KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13  then
button1.SetFocus;
end;

procedure Tlinefrm.FormShow(Sender: TObject);
begin
input1.SetFocus;
showfrm.Visible:=false;
end;

procedure Tlinefrm.Button2Click(Sender: TObject);
var i:integer;
begin
 for i:=0 to componentcount-1 do
  begin
  if components[i] is Tedit then
     Tedit(components[i]).Text:='';
  end;
end;

end.