Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
ВнизПерерисовка формы, когда она выходит за границы экрана Найти похожие ветки
← →
neodiX (2003-01-21 19:06) [0]Всем привет!
На форме постоянно рисуются изображения, т.е. даже тогда когда юзер двигает форму (поступают по сетке). Теперь когда юзер передвинул часть формы за рамку экрана, а потом вернул форму в прежнее положение, часть котороя была за экраном конечно же оказалась стерта. Теперь вопрос: как можно этого избежать? Боюсь делать что нибудь в OnPaint, т.к. скорее всего возникнет еррор, что канвас не позваляет в один и тот же момент рисовать на нем. Может есть какие идеи?
← →
gsu (2003-01-21 19:24) [1]Refresh
← →
neodiX (2003-01-22 12:29) [2]refresh чего? Канваса? Формы? Например если пишу "refresh;" в onpaint"е все виснет, т.к. получается "петля"... Может можно подробнее...
← →
neodiX (2003-01-22 12:46) [3]У меня тут идея возникла:
А можно ли в обработке WM_ERASEBKGND"а запритить перерисовку фромы?
← →
neodiX (2003-01-22 13:54) [4]ну хоть какой совет по теме! просто срочно надо...
← →
alxx (2003-01-22 13:59) [5]Стоит попробовать рисовать (постоянно) на какую нибудь Bitmap в памяти. А по таймеру и на событие OnPaint рисовать ее на форму.
← →
neodiX (2003-01-22 14:48) [6]Спасибо! Идея хороша. Я уже попробывал ее реализовать, возникла проблема самой перерисовки, т.е. т.к кадры поступают очень часто, заметна сама перерисовка.... Но я еще поразбираюсь с этим...
← →
Smithson (2003-01-22 14:53) [7]Нет, не верно. какую нибудь Bitmap в памяти!!!
Ее перерисовка заметна не будет. Ее вообще не надо отображать. А потом bitblt кидать ее на форму. Если картинки идут часто, то кидать не каждый, а с неким интервалом.
← →
neodiX (2003-01-22 15:11) [8]Так я так и делаю: рисую пришедшие картинки с bitblt на форме. Но проблема тогда, когда картинки больше не приходят (т.е. форма перерисовывается только тогда, когда приходят картинки), а юзер в это время передвинул форму за экран... Притом картинки разных размеров, я не могу перерисовывать всю форму - это не рацианально! Надо как-то в OnPaint"е перерисовывать только ту часть формы, куда будет рисоваться каринка. Я так и делаю, но при перерисовке вся форма заполняется серым (default"овым цветом) и тогда рисуется моя картинка... а это не хорошо!
← →
Smithson (2003-01-22 15:18) [9]Создай глобальный указатель на TBitmap. Создай объект. По приходу картинки делай .Assign полученной картинки в этот глобальный объект.
и Form1.Invalidate.
А в Form1.OnPaint делай bitblt. тогда при прорисовке формы все будет хорошо.
← →
neodiX (2003-01-22 16:13) [10]блин... у меня точно так все и реализовано, но в итоге все равно перед рисованием картинки вся форма стирается... не могу понять в чем дело? Теоритически все должно работать - так не работает :(
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c