Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
ВнизКак монопольно захватить Canvas? Найти похожие ветки
← →
pirat (2002-10-17 19:45) [0]У меня есть основная форма и отдельный поток. В нем я создаю Bitmap и на нем же рисую. После отрисовки каждой 10 линии, я копирую эти 10 линии CopyRect в PaintBox на основной форме. Все бы хорошо,но на PaintBox в некоторых местах появляются белые точки. Причем чем активнее двигаешь мышкой, тем больше точек при перерисовке. Повторное копирование не помогает. Точки каждый раз появляются в разных местах. Во время рисования, я кстати проверяю захвачем ли Canvas, и если нет - то захватываю.
Но вот толку от этого... :((
Как от этого (если возможно вообще) избавится?????
Как заблокировать Canvas для всех кроме себя?
Кстати вместо CopyRect уже попробовал использовать просто попиксельный перенос - результат тот же.
← →
Андрей Прокофьев (2002-10-17 19:47) [1]TCanvas.Lock
Prevents other threads from drawing on the canvas.
procedure Lock;
Description
Call Lock in a multithreaded application to prevent other threads from drawing on the canvas. Lock prevents other cooperating threads in the application from executing until the Unlock method is called. Nested calls to Lock increment the LockCount property so that the canvas is not unlocked until the last lock is released.
In multi-threaded applications that use Lock to protect a canvas, all calls that use the canvas must be protected by a call to Lock. Any thread that does not lock the canvas before using it will introduce potential bugs.
Because Lock prevents other threads from executing, it can adversely affect performance. Do not call Lock unless there is a danger that another thread might interfere with drawing on the canvas.
← →
pirat (2002-10-17 21:24) [2]это я уже делал ! :((
← →
MBo (2002-10-17 21:38) [3]странный эффект.
Рисование в методе потока, вызываемого с synchronize, не помогает?
← →
Rouse_ (2002-10-17 21:44) [4]Покажи как ты делаешь (сам поток и его вызов)
Желаю успехов
← →
pirat (2002-10-17 23:27) [5]спасибо за помощь, ребята!
куда надо было запихивать syncronize так и осталось для меня загадкой. :(
В итоге мне все это надоело и я переписал этот кусок на API - чем примитивнее - тем надежней.Все. После этого все глюки исчезли :))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c