Главная страница
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.06 c
1-1151430824
001
2006-06-27 21:53
2006.08.13
System.pas


15-1153286445
Ega23
2006-07-19 09:20
2006.08.13
С Днём рождения! 19 июля


2-1153777094
NataliaBorn
2006-07-25 01:38
2006.08.13
Вопрос по навигации по сайту вашему


2-1153692356
Soubi
2006-07-24 02:05
2006.08.13
добавление компонента


15-1151760863
Roast
2006-07-01 17:34
2006.08.13
Ищу работу программиста-стажера в Москве (Delphi)