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

Вниз

Перерисовка формы, когда она выходит за границы экрана   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
1-96658
Соловьев
2003-01-20 16:03
2003.01.30
Как в StringGrid-e в одной строке разбить столбец?


1-96831
NorthMan
2003-01-20 21:32
2003.01.30
Как узнать логин пользователя на удаленном компьютере?


3-96580
Alexander_K
2003-01-10 15:44
2003.01.30
Может версия не та?


14-97019
Сатир
2003-01-13 19:36
2003.01.30
Вопрос к веб-дизайнерам


14-97032
Alexsys
2003-01-12 11:30
2003.01.30
Как посмотреть Video CD для PlayStacion на компьютере?