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

Вниз

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

Наверх




Память: 0.48 MB
Время: 0.049 c
3-1149402157
SamProf
2006-06-04 10:22
2006.08.13
Как найти запись и изменить


2-1153605815
Забывчивый
2006-07-23 02:03
2006.08.13
Треугольник


15-1152340609
SerJaNT
2006-07-08 10:36
2006.08.13
ПРОФТ


15-1152788177
Джо
2006-07-13 14:56
2006.08.13
Веселые картинки, продолжаем с "Абсолютом" :)


15-1152882155
Ketmar
2006-07-14 17:02
2006.08.13
RSDN требует MS Word для статей