BOO! |
Отправлено: 01.09.2005, 16:14 |
|
Не зарегистрирован
|
я загружаю несколько внеэкранных образов TBitmap:
CODE |
TailLayer=new Graphics::TBitmap;
TailLayer->Width=4608;
TailLayer->Height=3072;
ALLLayer=new Graphics::TBitmap;
ALLLayer->Width=4608;
ALLLayer->Height=3072;
|
затем отрисовываю последний на канву объекта TImage:
CODE |
void TForm1::Draw()
{
BitBlt(ALLLayer->Canvas->Handle,0,0,LocalMap->Width,LocalMap->Height, TailLayer->Canvas->Handle,0,0,SRCCOPY);
if (ShowTailGrid)
{
BitBlt(ALLLayer->Canvas->Handle,0,0,LocalMap->Width,LocalMap->Height, TailGrid->Canvas->Handle,0,0,SRCAND);
}
ReDrawRect=Rect(0,0,1024,768);
BitBlt(LocalMap->Canvas->Handle,ReDrawRect.left,ReDrawRect.top,ReDrawRect.right,ReDrawRect.bottom, ALLLayer->Canvas->Handle,ReDrawRect.left,ReDrawRect.top,SRCCOPY);
}
|
При первом запуске функции все работает и отрисовывается нормально. Но последующие вызовы этой функции никчему не приводят, хотя ивестно, что во внеэкранных образах меняется содержимое.
Причем если провести каким то окном над моим Timage изменения проявляются!
Создается впечатление что канва просто не обновляется!
Подскажите как исправить или переделать или киньте инфу по теме.
Заранее спасибо!
|
|
Gedeon |
Отправлено: 01.09.2005, 16:38 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
image->Repaint();
|
|
BOO! |
Отправлено: 01.09.2005, 20:04 |
|
Не зарегистрирован
|
Не так непойдет. Так изображение перерисовывается полностью, начинаются лаги. Можно как нибудь обновлять только часть изображения?
Или вообще можно еще как нибудь улучшить программу?(переход на д3д не предлагать)
Размер изображения: 1024*768.
|
|
BOO |
Отправлено: 01.09.2005, 21:34 |
|
Не зарегистрирован
|
Я попробовал загрузить на канву изображение, а затем только вызывать метод refresh(); без отрисовки. Даже в этом случае появляется мигание!
Т.е. даже без отрисовки метод refresh(); достаточно тормозит :-( |
|
olegenty |
Отправлено: 02.09.2005, 06:33 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
ControlStyle << scOpaque? — для родителей TImage
DoubleBuffered = true? — для TImage и его родителей
|
|
BOO |
Отправлено: 02.09.2005, 19:21 |
|
Не зарегистрирован
|
>>ControlStyle << scOpaque? — для родителей TImage
DoubleBuffered = true? — для TImage и его родителей
Извиняюсь, но я не знаю как обратится к родителям объекта!
А про свойтво я прочитал скорее всего то что надо.
|
|
Sl@Sh |
Отправлено: 04.09.2005, 13:41 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Скорее всего у вас родитель — форма. А у формы есть свойство DoubleBuffered. Поставте его в труй (только на время рисования, для экономии ресурсов). Должно помочь.
|
|
|