Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TImage [D5, Win95/98]


Artemkin ©   (2002-04-30 09:00:00) 

Требуется двигать по форме TImage с задержкой. Как это делать быстро и без моргания???


Doom   (2002-05-09 13:04:00) [1]


> Владимир Васильев © (30.04.02 10:52)
> Надо буферизировать вывод графики - сначала собираешь картинку
> в памяти - TBitmap - а потом её копируешь на канву формы

а если загружен JPG а не битмап, что тогда?
У меня сейчас на этом загвоздка, не знаю что и делать.
Нужно передать изображение по инету. У меня это сделано так. Передает сервер, принимает клиент. Сервер пишетImage1.Picture.Graphic.SaveToStream(MyMemoryStream)
клиент читаетImage2.Picture.Graphic.LoadFromStream(MyClientMemoryStream);
все прекрасно получается, НО...у клиента картинка оччень неприятно мигает. КАК от этого избавиться? Оччень надеюсь на помощь.


VEG   (2002-04-30 17:09:00) [2]

Короче, кладем на ПАНЕЛЬ (Panel1) все комнпоненты, которые нужно двигать БЕЗ мерцания. Для события OnMouseDown тех компонентов, при клике по которому должно происходить перемещение пишешь:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Panel1.perform(WM_SysCommand, $F009, 0);//Двигаем ПАНЕЛЬ!!!
end;

Причем свойство FullRepaint у ПАНЕЛИ (Panel1) ДОЛЖНО стоять в FALSE!!!


Владимир Васильев   (2002-04-30 10:54:00) [3]

И ещё, если прорисовка стоит на OnMouseMove - то надо ограничить вывод разумным пределом - 10-20 раз в секунду.


Владимир Васильев   (2002-04-30 10:52:00) [4]

Надо буферизировать вывод графики - сначала собираешь картинку в памяти - TBitmap - а потом её копируешь на канву формы


MBo   (2002-04-30 10:16:00) [5]

какое смещение - это уж твое дело


Artemkin   (2002-04-30 09:41:00) [6]

сильно большое смещение...image1.left:=image1.left +10, надо ..+1 и побыстрее


MBo   (2002-04-30 09:34:00) [7]

Timer1.Timer

image1.left:=image1.left+10;


Artemkin   (2002-04-30 09:24:00) [8]

А как с задержкой быть ?


MBo   (2002-04-30 09:05:00) [9]

уменьшить моргание -
doublebuffered:=true;

а может, на канве рисовать ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо