Форум: "Основная";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
ВнизTImage vs TPaintBox Найти похожие ветки
← →
salexn (2006-06-30 10:03) [0]Есть dll, в которой реализован класс, наследник от Thread. В классе есть TBitmap и на нем рисуется графика. Хост приложение должно периодически отрисовывать полученный результат. Использую TPaintBox, в котором на Onpaint это все и делается. Однако замечено, что есть нагрузить компьютер(CPU=100%) и начать переключаться между окнами, получаем белое окно вместо графика.
imgGraphic - TPaintBox
GraphicBuilder.Graphic.Canvas.Lock;
try
BitBlt(imgGraphic.Canvas.Handle, 0, 0, imgGraphic.Width, imgGraphic.Height, GraphicBuilder.Graphic.Canvas.Handle, 0, 0, SRCCOPY);
finally
GraphicBuilder.Graphic.Canvas.UnLock;
end;
Если же использовать TImage то мерцает при отрисовке
GraphicBuilder.Graphic.Canvas.Lock;
try
imgGraphic.Picture.Bitmap := GraphicBuilder.Graphic;
//imgGraphic.Picture.Assign(GraphicBuilder.Graphic);
finally
GraphicBuilder.Graphic.Canvas.UnLock;
end;
В чем проблема, как побороть или как правильно сделать?
← →
Desdechado © (2006-06-30 10:45) [1]> есть нагрузить компьютер(CPU=100%)
Ты попробуй ради интереса запустить фотошоп в таком режиме. И попереключаться. Отрисовка просто не успевает.
И не забывай вызывать Application.ProcessMessage
← →
REA (2006-06-30 12:00) [2]А не надо отрисовывать в потоке. Надо в OnPaint отрисовывать
← →
salexn (2006-06-30 12:10) [3]А кто сказал что в потоке отрисовываю??
В потоке, на TBitmap рисуется графика, а хост приложение просто его считывает... В OnPaint рисуется только результат. Или ты предлагаешь на каждый OnPaint заново переделывать график? Это нереально.
← →
MBo © (2006-06-30 12:20) [4]>Если же использовать TImage то мерцает при отрисовке
DoubleBuffered установи родителю Timage
← →
Чапаев © (2006-06-30 12:40) [5]
> >Если же использовать TImage то мерцает при отрисовке
> DoubleBuffered установи родителю Timage
А так же Transparent:=False.
← →
salexn (2006-06-30 12:44) [6]>MBo
Все равно мерцает...
← →
REA (2006-06-30 12:52) [7]Lock/Unlock в случае с Bitmap мне кажется можно убрать - там это внутри должно быть. Если рисунок достаточно большой, то и будет мерцать.
У родителя неплохо бы перехватить WM_EraseBackground
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c