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

Вниз

Как избавиться от мерцания формы при перерисовке   Найти похожие ветки 

 
Vasiliy   (2003-05-10 21:14) [0]

Может ктонибудь подскажет как избавиться от этой проблемы, гдето читал что нужно синхронизировать перерисовку с частотой обновления экрана, может быть есть другие способы?


 
Still Swamp   (2003-05-15 15:11) [1]

на счет обновления даже и не знаю.
мерцает - потому что ты успеваешь заметить последовательность действий вывода - те,
очистка формы - увидел белый фон
вывод элементов - увидел рябой фон и тд...
что бы этого н было, выводи все ня TBitMap, а затем его canvas на форму.

var
TempBitmap:TBitmap;
begin
TempBitmapBitmap:=TBitmap.Create;
TempBitmapBitmap.Height:=Form.ClientHeight;
TempBitmapBitmap.Width:=Form.ClientWidth;
TempBitmapBitmap.Canvas.... рисуешь...
Form.CopyRect.....
TempBitmapBitmap.Free;
end;


 
AlexRush   (2003-05-15 16:48) [2]

Still Swamp >> Идея абсолютно верная. Но для быстрой работы с графикой TBitmap не годится, и вообще рисовать на нем не рекомендую. Я кат-то смотрел его исходники в VCL- много лишней работы. Стандартный прием - Создание совместимого контекста устройства (CreateCompatibleDC), рисования всего вывода на нем, а в главном окне, на WM_PAINT копировать необходимый кусок с виртуального на реальный DC (BitBlt). Рекомендую так же посмотреть ф-ю ScrollWindowEx - может оказаться полезной.
Если изображение динамично (непрерывно меняется), то перерисовываем опять-таки нужную часть виртуального DC и копируем эту часть на реальный DC (Через CallWindowProc чуть бустрее, или напрямую вызуваем обработчик WM_PAINT"а).


 
AlexRush   (2003-05-15 16:53) [3]

Vasiliy >> А на счет синзронизации с обновлением экрана - под DOSом это было прерывание обратного хода луча, а под Окнами... по-моему DirectX кат-то с этим разбирается, не знаю точно. Можешь спросить в ветках Media и Игры.


 
Плохой человек   (2003-05-15 17:00) [4]

Если мерцают компоненты, а именно потомки TWinControl, то надо ставить DoubleBuffered в True.


 
Still Swamp   (2003-05-15 17:41) [5]

TO AlexRush
Это верно, однако человеку с нуля начинающему разбираться, легче осмыслить на битмапе. Потом можно и далее.


 
Думкин   (2003-05-17 08:42) [6]


> Плохой человек (15.05.03 17:00)

Это верно. Но... иногда такие тормозы вылазят.
Лучше по-хорошему разобраться с WM_Paint и использовать Still Swamp.
Но тут много ньюансов - во-первых чего хотим?


 
Delphi5.01   (2003-05-17 20:35) [7]

>Думкин>AlexRush>Still Swamp>
Chto kasaetsa DirecX, eto reshenie problemmi, no vzamen poluchaesh bolshoi kod (bes truda ne nakataesh progu na delffax).
A vot chto kasaetsa BitMap i BitBlt to vot eto, vradli, u mena poxojaia problemma bila. Bolee tochnei nujno utochnit votos, kogda migaer forma? elsli pri animacii to BitMap+BitBlt+Draw(v slucher Transparent) dostatochno. no esli migaet kogda peretaskivaesh formu (kak u mena), to togda nado uskorat risovanie v Paint-e, lishnie operacii vikinut.
Mne kajetsa chto edinstvennoe reshenie DirectX (2 AlexRush chto kasaertsa CreateCompatibleDC nemogu prokomentirovat ne ispolzoval no ochen interesno poslushat bolee podrobnuiu infu).
Jelau xorosho i bistro napisat progu!


 
Думкин   (2003-05-19 04:55) [8]

> Delphi5.01 © (17.05.03 20:35)
Про ДиректХ я речь и не вел. Можно все и без него сделать.
А с ускорением - тут много можно чего сделать - просто вопрос не уточнен.



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

Форум: "Media";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.011 c
14-48792
AZ
2003-08-26 04:12
2003.09.15
Фу-у-у!!! Закончил проект. А как у вас дела?


14-48753
Тролль
2003-08-26 18:19
2003.09.15
Multimedia API


1-48638
td
2003-09-03 08:59
2003.09.15
TreeView


14-48764
*pavel
2003-08-26 13:30
2003.09.15
Novell & bad sector


14-48720
Ru
2003-08-22 11:33
2003.09.15
Любителям философо-практических баталий:





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский