Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.28;
Скачать: CL | DM;

Вниз

перемещение+изменение размера=1 обновление   Найти похожие ветки 

 
BFG9k ©   (2005-08-08 14:39) [0]

На форме расположена картинка (FastImg) с Align=alClient. Делаю перемещение формы вместе с изменением ее размера:


procedure TForm2.ZoomAndMove(ALeft,ATop:integer;AScale:Real);
begin
SetBounds(ALeft,ATop,Round(Width*AScale),Round(Height*AScale));
end;


Видно, что картинка дергается: сначала происходит изменение размера, а потом перемещение. То есть происходит 2 обновления, хотя по логике процедура SetBounds нужна для того, чтобы этого избежать.

Как добиться одной перерисовки ?


 
Anatoly Podgoretsky ©   (2005-08-08 14:58) [1]

Не для этого нужно, а для того что бы не было восьми перерисовок.


 
Slym ©   (2005-08-08 15:05) [2]

Anatoly Podgoretsky ©   (08.08.05 14:58) [1]
Смяшно и в тему...
LockWindowUpdate


 
BFG9k ©   (2005-08-08 15:41) [3]

procedure TForm2.ZoomAndMove(ALeft,ATop:integer;AScale:Real);
begin
LockWindowUpdate(Handle);
SetBounds(ALeft,ATop,Round(Width*AScale),Round(Height*AScale));
  LockWindowUpdate(0);
end;

Работает. Но видно, что каждый раз перерисовывается ВЕСЬ экран, а не только окно. Почему это происходит и как этого избежать ?


 
BFG9k ©   (2005-08-09 12:55) [4]

2 Anatoly Podgoretsky:

Если такой умный, почему бы не ответить ?;-)


 
BFG9k ©   (2005-08-09 14:32) [5]

Ладно, сам спросил - сам отвечаю :

Убираем FastImg.Align:=alClient;

Далее...



procedure TForm2.DoAlign(ALeft,ATop,AWidth,AHeight:integer);
begin
  Parent.Perform(WM_SETREDRAW,0,0);
  FastImg.SetBounds(0,0,AWidth,AHeight);
  SetBounds(ALeft,ATop,AWidth,AHeight);
  Parent.Perform(WM_SETREDRAW,1,0);
  InvalidateRect(FastIMg.Handle,nil,True);
  InvalidateRect(Parent.Handle,nil,True);
  UpdateWindow(Parent.Handle);
end;

procedure TForm2.ZoomAndMove(ALeft,ATop:integer;AScale:Real);
begin
  DoAlign(ALeft,ATop,Round(Width*AScale),Round(Height*AScale));
end;




Страницы: 1 вся ветка

Текущий архив: 2005.08.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
4-1121089291
grigory
2005-07-11 17:41
2005.08.28
Проблема с остановкой хука!!


1-1123251915
Андрей Молчанов
2005-08-05 18:25
2005.08.28
Node.CustomSort


4-1121167408
SergeyDon
2005-07-12 15:23
2005.08.28
остановка сервиса.


3-1121417544
erika
2005-07-15 12:52
2005.08.28
Отбор связанных таблиц


14-1123074511
Antonn
2005-08-03 17:08
2005.08.28
Держащим сайты на narod.ru