Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
4-1120324212
Igivan
2005-07-02 21:10
2005.08.28
соединение с внешним устройством


3-1121844784
alex_***
2005-07-20 11:33
2005.08.28
ADO и view


1-1123219072
root
2005-08-05 09:17
2005.08.28
Манифест XP


6-1110641616
ТехникПТО
2005-03-12 18:33
2005.08.28
Как загрузить HTML-код в определенный фрейм страницы браузера?


5-1094017910
segor
2004-09-01 09:51
2005.08.28
Редактор ячейки в TdxDBGrid




   Наверх