Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Вниз

перемещение+изменение размера=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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.041 c
14-1122973644
12DFBDDh
2005-08-02 13:07
2005.08.28
Политкорректные сказки


3-1121412047
msguns
2005-07-15 11:20
2005.08.28
Запрос на объединение строк


14-1122027658
Piter
2005-07-22 14:20
2005.08.28
Чарльз Петцольд "Программирование для MS Windows на С#"


1-1123266295
Evgenius
2005-08-05 22:24
2005.08.28
Непонятная ошибка...


1-1123164593
Русланка
2005-08-04 18:09
2005.08.28
А как в DBComboBox программно установить какую либо строку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский