Aptem |
Отправлено: 22.03.2006, 14:33 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Доброго времени суток.
Есть проблема. Как очистить TImage? Казалось бы все просто, но облазив весь форум не нашел ничего подходящего. Всякие там Repaint и FreeImage не подходят, точнее не подходят в тех местах где они написаны
У меня на форме лежит ScrollBox на нем TImage, в TImage программно через TStream загружается картинка, например 100х100, затем этим же способом загружается другая картинка на тот же TImage, но размером 50х50. Та часть, которая больше 50х50 рисуется от первой картинки, а та которая 50х50 от новой. Вот такие вот проблемы.
Может все таки решим раз и навсегда эту проблему.
Спасибо за внимание.
|
|
poland |
Отправлено: 22.03.2006, 15:02 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
QUOTE (Aptem @ 22/03/2006, 14:33) | Казалось бы все просто |
CODE | ScrollBox->Invalidate(); | если не понравится результат
CODE | TRect r(ScrollBox->ClientRect);
::Invalidate(ScrollBox->Handle,&r,true или false); | |
|
gvg |
Отправлено: 22.03.2006, 17:50 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
А если Image->Picture = NULL |
|
Aptem |
Отправлено: 22.03.2006, 19:50 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Не сработало ни то ни другое, однако заметил интересную вещь. Если вдруг картинка имеет размер 4096х2048 то есть на форме она не умещается и на скролбоксе появляются скролбары, то следующая картинка загружается чисто, то есть то, что надо. Однако если этих скролбаров нет, то и ничо не стирается. Вот такая вот забавная вещь. Я подумал, мож как то надо принудительно вызывать что-то вроде OnResize.
|
|
MarcusCaesar |
Отправлено: 22.03.2006, 22:37 |
|
Не зарегистрирован
|
У меня сработало 2 варианта очистки:
1) Image->Canvas->Handle = NULL;
2) удалить TImage (с помощью delete Image)
и затем в рантайме создать его заново:
Image = new TImage(NULL);
Image->Parent = ScrollBar;
Image->Width = 50;
Image->Height = 50;
Но после этого необходимо принудительно изменить клиентской части ScrollBar и положения бегунков. |
|
Grigoriy |
Отправлено: 22.03.2006, 23:12 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
QUOTE (Aptem @ 22/03/2006, 14:33) | Всякие там Repaint и FreeImage не подходят, точнее не подходят в тех местах где они написаны
|
Ну и объясни почему они "не подходят".
Тогда я тебе дам окончательный ответ на твою проблему.
Измени размеры самого Image до размеров 1*1 пиксел перед тем как будешь в него грузить новый БИТМАП. А потом восстанови предыдущие размеры и грузи новое изображение.
|
|