Главная страница
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.052 c
15-1152875849
ferr
2006-07-14 15:17
2006.08.13
Хм. Странно. Я думал журнал "Наука и техника" не из тех...


3-1149750594
Torin
2006-06-08 11:09
2006.08.13
фильтры и midas.dll


15-1153375938
Лысов
2006-07-20 10:12
2006.08.13
Вызов методов из dll


2-1153587083
KaLLeKa
2006-07-22 20:51
2006.08.13
Как прокрутить текст в начало ?


15-1153239518
Kerk
2006-07-18 20:18
2006.08.13
Неофициальный news-сервер FIDO