Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
1-96812
rea
2003-01-20 16:34
2003.01.30
Inplace Edit


3-96525
saf
2003-01-14 17:50
2003.01.30
Данные в поле Currency


3-96534
NaPoleOn_IV
2003-01-14 21:55
2003.01.30
Копирование


4-97090
vicheslav
2002-12-16 12:41
2003.01.30
Flash USB Easy disk


1-96681
harismatik
2003-01-21 20:42
2003.01.30
Как запретить ресайз





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