Текущий архив: 2003.11.27;
Скачать: CL | DM;
ВнизCanvas Найти похожие ветки
← →
TUser (2003-11-17 17:33) [0]Есть поток, который рисует что-то на канве. Код у него такой
i:=0;
while true do begin
inc (i);
if i=10000000 then begin
i:=0;
// Битмап заполняет всю форму целиком
form1.Canvas.Draw(0,0,Form1.BitMap);
// Потом что-то рисуем
end;
end;
Вроде бы при каждой новой прорисовке старый рисунок должен удаляться. так и происходит, но если над формой поместить указатель мыши, то после этого удаление старого рисунка не происходит. В чем тут дело и как лечить?
← →
pasha_golub (2003-11-17 17:42) [1]Вообще-то скажу вам что для этого надо сначала делать вот так
form1.Canvas.Lock;
///draw
form1.Canvas.UnLock;
← →
TUser (2003-11-17 17:56) [2]Нет, не помогает. Тот же глюк остается.
← →
PVitaliy (2003-11-17 18:08) [3]
> form1.Canvas.Draw(0,0,Form1.BitMap);
Насколько я знаю обращение к обектам ВЦЛ из неВЦЛ потока должно быть через процедуру Synchronize
← →
Семен Сорокин (2003-11-17 18:11) [4]2TUser
создай битмап нужных размеров, рисуй на нем, а потом CopyRect"ом копируй на форму (в Synhronize), только глупое занятие это - делать отрисовку VCL-объекта в потоке.
← →
TUser (2003-11-17 18:37) [5]Да, точно. Через Synchronize все работает. Всем спасибо.
Страницы: 1 вся ветка
Текущий архив: 2003.11.27;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.015 c