Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
2-1153667913
Tort
2006-07-23 19:18
2006.08.13
Системное время и работа с ним


6-1143708549
S.Ivanov
2006-03-30 12:49
2006.08.13
Разное поведение D6 и D7 при вызове web-сервиса


3-1149748164
VALUA
2006-06-08 10:29
2006.08.13
DBGRID - переиндексация набора данных


2-1153987112
Vovan2006
2006-07-27 11:58
2006.08.13
Возможна ли обработка ситуации выгрузки программы в самой програм


15-1153143313
Separator
2006-07-17 17:35
2006.08.13
Текстовый редактор с подсветкой синтаксиса




   Наверх