![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как быстро передвинуть Image? [D7, Win2k]
bulanov © (2004-11-24 04:07:00)Подскажите пожалуйста как разрешить следующую проблему:
мне необходимо (с шагом 1-2 пикселя) двигать картинку на форме (допустим слева-направо), причем очень быстро. Как бы я не пытался это осуществить у меня ничего не выходит, двигается слишком медленно (и просто двигал, и перерисовывал на канву по указанным координатам и копировал). Увеличение шага сдвига приводит к тому, что при выполнении еще каких-либо задач приложением, картинка при перемещении начинает жутко искажаться.
bulanov (2004-11-24 04:48:00) [1]ой, блин не заметил =-))))
спасибо.
Defunct (2004-11-24 04:43:00) [2]> я написал что нужна скорость пикселей 400 в секунду
эх.. я же понятия не имею, что есть для вас скорость 400 пикселей в секунду...
Defunct (2004-11-24 04:41:00) [3]bulanov (24.11.04 04:39) [4]
Уберите Sleep.
Sleep регулирует скорость перемещения.
bulanov (2004-11-24 04:39:00) [4]не совсем то что нужно,
я написал что нужна скорость пикселей 400 в секунду, а этот пример рисует в 6 раз меленнее.
если увеличиваю шагdec(i);начинаются искажения.
Defunct (2004-11-24 04:30:00) [5]Кнопкой запускается, той же кнопкой и останавливется.
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp : TBitmap;
i : Integer;
begin
if TButton(Sender).Tag > 0 then TButton(Sender).Tag := 0 else
begin
Bmp := TBitmap.Create;
with TButton(Sender) do
Try
Tag := 1;
Try
bmp.LoadFromFile('C:\Test.bmp'); // <-- Ваш рисунок
Canvas.Pen.Color := Color;
i := Self.Width - bmp.Width;
while Tag>0 do
begin
dec(i);
if i < - bmp.Width then i := Self.Width - bmp.Width;
Canvas.Draw(i, 20, bmp);
Canvas.MoveTo( i + bmp.Width, 20);
Canvas.LineTo( i + bmp.Width, 20 + bmp.Height );
Sleep(2);
Application.ProcessMessages
end
except
On E:Exception do ShowMessage( E.Message )
end
finally
Bmp.Free
end
end
end;
bulanov (2004-11-24 04:27:00) [6]400 пикселей в секунду
ЮЮ (2004-11-24 04:19:00) [7]>(с шагом 1-2 пикселя) очень быстро.
определись: с шагом или быстро :)
скорость = пикселм в секунду. шаг должен зависить от того, сколько времени прошло к моменту очередной перерисовем