Анимация

  • Автор темы Guest
  • Дата начала
G

Guest

#1
Здравствуйте уважаемые программисты. Помогите пожалуйста найти ошибку. Задание: создать в Delphi трехстраничный блокнот с графикой. На третьей странице должен быть прямоугольник, а по его сторонам при нажатии кнопки (BitBtn) катится шарик.
Что то пыталась сделать, в результате: Шарик появляется не совсем там где нужно, кнопки невидимы, и через какое то время выбивает ошибку, что то про ресурсы. Помогите пжл, в чем ошибка? Заранее спасибо.
Вот код программы:

Код:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
nb1: TTabbedNotebook;
bvl1: TBevel;
chk1: TCheckBox;
rg1: TRadioGroup;
se2: TSpinEdit;
se3: TSpinEdit;
se1: TSpinEdit;
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
bvl2: TBevel;
pb1: TPaintBox;
pb2: TPaintBox;
pb3: TPaintBox;
lbl4: TLabel;
ScrollBar1: TScrollBar;
lbl5: TLabel;
lbl6: TLabel;
btn1: TBitBtn;
btn2: TBitBtn;
se4: TSpinEdit;
se5: TSpinEdit;
se6: TSpinEdit;
se7: TSpinEdit;
chk2: TCheckBox;
lbl7: TLabel;
lbl8: TLabel;
lbl9: TLabel;
lbl10: TLabel;
tmr1: TTimer;
lbl11: TLabel;
procedure FormCreate(Sender: TObject);
procedure pb3Paint(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
x0,y0: Integer;
BitMap1: TBitmap;
BitMap2: TBitmap;
BitMap3: TBitmap;
Rect1 : TRect;
L	 : Integer;
const
Rl=20;
Ck=180;
Cs=0;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.Icon:=Form1.Icon;
end;

procedure TForm1.pb3Paint(Sender: TObject);
var i : Integer;
begin
with pb3, Canvas do begin
CopyMode:=cmSrcCopy;
x0:= Width div 2;
y0:= Height div 2;
Brush.Style:=bsSolid;
Brush.Color:=clBlack;
FillRect(Rect(0,0,Width,Height));
BitMap1:=TBitMap.Create;
BitMap1.LoadFromFile('prjamougolnik.bmp');
BitMap2:=TBitMap.Create;
BitMap3:=TBitMap.Create;
BitMap2.Height:=Rl;	  BitMap2.Width:=Rl;
BitMap3.Height:=Rl;	  BitMap3.Width:=Rl;
Rect1:=Rect(0,0,Rl,Rl);
BitMap3.Canvas.CopyRect(Rect1,Canvas,Rect(20,20,20+Rl,20+Rl));
Brush.Color:=clBlue;
Ellipse(20,20,20+Rl,20+Rl);
BitMap2.Canvas.CopyRect(Rect1,Canvas, Rect(20,20,20+Rl,20+Rl));
Brush.Color:=clBlack;
FillRect(Rect(0,0,Width,Height));
Draw(20,20,BitMap3);
Draw((Width div 2)-(BitMap1.Width div 2),
(Height div 2)- (BitMap1.Height div 2), BitMap1);
for i:=1 to Cs do Pixels[Random(Width),Random(Height)]:=clRed;
Tmr1Timer(Tmr1)
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
Tmr1.Enabled:=True;
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
Tmr1.Enabled:=False;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
var x1,y1,x2,y2 : Integer;
t		  : Real;
begin
with pb3.Canvas do begin
t:=(l)/Ck*Pi*2;
x1:=Round(x0+Width div 3*Cos(t)-Rl div 2);
y1:=Round(y0+Height div 3*sin(t)- Rl div 2);
x2:=x1+Rl;
y2:=y2+Rl;
Draw(x1,y1,BitMap3);
L:=L+1;
if L>Ck then L:=1;
lbl11.Caption:=IntToStr(l);
t:=(l)/Ck*Pi*2;
x1:=Round(x0+Width div 3*Cos(t)-Rl div 2);
y1:=Round(y0+Height div 3*sin(t)- Rl div 2);
x2:=x1+Rl;
y2:=y2+Rl;
Draw(x1,y1,BitMap2); 
end;
end;

end.
 
09.11.2009
665
1
#2
Если еще актуально, то вопрос
Задание: создать в Delphi трехстраничный блокнот с графикой. На третьей странице должен быть прямоугольник, а по его сторонам при нажатии кнопки (BitBtn) катится шарик.
как катится шарик(внутри квадрата, или снаружи)?
 

acorn

PHP Developer
29.08.2004
585
3
#3
С такими названиями переменных и без комментариев желание разбираться с кодом отсутствует.
 
G

Guest

#4
Спасибо, но я уже сделала =)

Добавлено:
С такими названиями переменных и без комментариев желание разбираться с кодом отсутствует.
Я понимаю, с комментариями легче, но как то нас к этому не приучили =( с таким объемом заданий и коротким сроком на выполнение, на комменты и переменные не обращаешь внимания, главное чтоб работало...