![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите запустить паровозик по синусоиде :)
MaxAir © (2005-04-05 13:27:00)Нужно написать программу которая бы рисовала паровозик из разноцветных блоков причем контуры все тоже из разного цвета! а потом запустить его движение по синусоиде(ну или хотя бы по прямой) если у кого есть готовая киньте. Заранее спасибо надеюсь в орех не попаду :)
parovoZZ (2005-04-07 09:09:00) [1]Мне тоже приятно.
MaxAir (2005-04-05 15:29:00) [2]спасибо большое ! немного не то но дальше я сам :)
MBo (2005-04-05 14:14:00) [3]
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure RefreshBMP;
end;
const
s = 'чухчухчух!';
Len = Length(s);
var
Form1: TForm1;
b: TBitmap;
N: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
b := TBitmap.Create;
b.Width := ClientWidth;
b.Height := ClientWidth;
DoubleBuffered := True;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
if b.Width <> ClientWidth then
b.Width := ClientWidth;
if b.Height <> ClientHeight then
b.Height := ClientHeight;
RefreshBMP;
Canvas.Draw(0, 0, b);
end;
procedure TForm1.RefreshBMP;
var
i, w, h, x, y: Integer;
begin
w := b.Width;
h := b.Height;
PatBlt(b.Canvas.Handle, 0, 0, w, h, BLACKNESS);
b.Canvas.Font.Name := 'Arial';
b.Canvas.Font.Size := 24;
w := w - 24;
h := h - 30;
for i := 1 to Len do begin
SetBkColor(b.Canvas.Handle, Random($FFFFFF + 1));
X := Round(w + w * Sin((N - i) / 12)) div 2;
Y := Round(h + h * Sin((N - i) / 9)) div 2;
b.Canvas.TextOut(x, y, s[i]);
if (i=1) and (N mod 20<5) then
b.Canvas.TextOut(x-5, y-40, 'ту-ту');
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(N);
Refresh;
end;