![]() |
|
|
|
|
#1
|
|||
|
|||
|
У меня вопрос
как сделать что бы за кружком следую рисовалась линия Код:
var t:real;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
t:= t + Timer1.Interval/1000;
Shape1.Top := round(50*sin(t))+300;
Shape1.Left := round(50*cos(t))+300;
end;
end. |
|
#2
|
|||
|
|||
|
Все спят что ли (
Я вот мучаюсь нефига не получается |
|
#3
|
|||
|
|||
|
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
t:= t + Timer1.Interval/1000;
Shape1.Top := round(50*sin(t))+300;
Shape1.Left := round(50*cos(t))+300;
Canvas.LineTo((Shape1.Left shl 1 + Shape1.Width) shr 1,
(Shape1.Top shl 1 + Shape1.Height) shr 1);
end; |
|
#4
|
||||
|
||||
|
Nyctos Kasignete, я тож так подумал, но сам Shape своей прорисовкой перекрывает (стирает) Canvas. С Canvas никогда не приходилось работать, но че- то пост заинтересовал. Как сделать линию канвы постоянной?
|
|
#5
|
|||
|
|||
|
Чтобы линия не затиралась объектом Shape, можно поступать по-разному... Можно линию отрисовывать не на Canvas формы, а, например, на прозрачном TImage (со всеми последствиями). А можно (предпочтительнее) на отдельном Bitmap в памяти, который затем отрисовывать на Canvas'е. Вот как-то так, наверное:
Код:
var
Form1: TForm1;
t: real;
Bmp: TBitmap;
..................
procedure TForm1.Timer1Timer(Sender: TObject);
begin
t := t + Timer1.Interval/1000;
Shape1.Top := round(50*sin(t))+300;
Shape1.Left := round(50*cos(t))+300;
Application.ProcessMessages;
Bmp.Canvas.LineTo(Shape1.Left + Shape1.Width shr 1,
Shape1.Top + Shape1.Height shr 1);
Canvas.Draw(0, 0, Bmp);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
t := 0;
Bmp := TBitmap.Create;
Bmp.Width := ClientWidth; Bmp.Height := ClientHeight;
Bmp.Transparent := True;
Shape1.Top := round(50*sin(t))+300;
Shape1.Left := round(50*cos(t))+300;
Bmp.Canvas.MoveTo(Shape1.Left + Shape1.Width shr 1,
Shape1.Top + Shape1.Height shr 1);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Bmp.Free;
end; |
|
#6
|
|||
|
|||
|
Спасибо за пример
но он сильно проц грузит = ) |