Скачиваний:
19
Добавлен:
01.05.2014
Размер:
3.49 Кб
Скачать
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Image1: TImage;
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
Label1: TLabel;
Label2: TLabel;

//procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure UpdateP();
procedure redraw();
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
p: integer =5; // порядок кривой
u: integer =7; // длина штриха

implementation

{$R *.dfm}




{ Кривую Гильберта можно получить путем
соединения элементов а,b,с и d.

Каждый элемент строит
соответствующая процедура. }
procedure afun(i:integer; canvas: TCanvas); forward;
procedure bfun(i:integer; canvas: TCanvas); forward;
procedure cfun(i:integer; canvas: TCanvas); forward;
procedure dfun(i:integer; canvas: TCanvas); forward;

// Элементы кривой

procedure afun(i: integer; canvas: TCanvas);
begin

if i > 0 then begin

dfun (i-1, canvas);
canvas.LineTo(canvas.PenPos.X+u,canvas.PenPos.Y);
afun (i-1, canvas);
canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y+u);
afun (i-1, canvas);
canvas.LineTo(canvas.PenPos.X-u,canvas.PenPos.Y);
cfun (i-1, canvas);
end;
end;

procedure bfun(i: integer; canvas: TCanvas);

begin

if i > 0 then begin

cfun (i-1, canvas);
canvas.LineTo(canvas.PenPos.X-u,canvas.PenPos.Y);
bfun (i-1, canvas);
canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y-u);
bfun (i-1, canvas);
canvas.LineTo(canvas.PenPos.X+u, canvas.PenPos.Y);
dfun (i-1, canvas);
end;
end;

procedure cfun(i: integer; canvas: TCanvas);
begin

if i > 0 then begin

bfun (i-1, canvas);
canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y-u);
cfun (i-1, canvas);
canvas.LineTo(canvas.PenPos.X-u,canvas.PenPos.Y);
cfun(i-1, canvas);
canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y+u);
afun (i-1, canvas);
end;
end;

procedure dfun(i: integer; canvas: TCanvas);
begin

if i > 0 then begin

afun (i-1, canvas);
canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y+u);
dfun(i-1, canvas);
canvas.LineTo(canvas.PenPos.X+u,canvas.PenPos. Y) ;
dfun (i-1, canvas);
canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y-u);
bfun (i-1, canvas);
end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
redraw();
{Form1.Canvas.MoveTo(u, u) ;

afun(p,image1.Canvas); }// вычертить кривую Гильберта
//Form1.Refresh;
{image1.Canvas.Brush.Color:=clBlue;
image1.Canvas.Pen.Color:=clBlue;
image1.Canvas.Rectangle (10,10,70,70);
image1.Canvas.Rectangle (100,100,7,7);
image1.Canvas.MoveTo(u, u) ;
image1.Canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y+100); }
//ShowMessage('ky ky');

{ image1.canvas.pen.Color:=clBlue;
image1.Canvas.Brush.Color:=clBlue;
image1.Canvas.Rectangle(0,0,image1.width-5,image1.height-5);
image1.canvas.pen.Color:=clblack; }
end;

procedure TForm1.redraw();
begin
p:= TrackBar1.position;
u:= TrackBar2.position;
image1.canvas.pen.Color:=clwhite;
image1.Canvas.Brush.Color:=clwhite;
image1.Canvas.Rectangle(0,0,image1.width,image1.height);
image1.canvas.pen.Color:=clblack;
image1.Canvas.Brush.Color:=clblack;

image1.Canvas.MoveTo(u, u) ;
afun(p,image1.Canvas); // вычертить кривую Гильберта
end;

procedure TForm1.updatep();
begin
p:= TrackBar1.position;
redraw();
ShowMessage('qwe');
end;
end.




Соседние файлы в папке Lab4
  • #
    01.05.2014188 б17Project1.dpr
  • #
    01.05.2014876 б17Project1.res
  • #
    01.05.20146.15 Кб17Unit1.dcu
  • #
    01.05.201451 б17Unit1.ddp
  • #
    01.05.20141.09 Кб17Unit1.dfm
  • #
    01.05.20143.49 Кб19Unit1.pas
  • #
    01.05.201451 б17Unit1.~ddp
  • #
    01.05.2014328 б18Unit1.~dfm
  • #
    01.05.20142.5 Кб18Unit1.~pas