Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.56 MB
Время: 0.031 c
1-92517
ev
2002-10-17 20:43
2002.10.28
как сделать TStringGrid и TListBox со скролом справа?


1-92609
acorus
2002-10-17 12:37
2002.10.28
Неужели все мастера жмут Ctrl-K-I/U ?


7-92758
Igorka
2002-08-23 11:22
2002.10.28
NT Service


14-92644
Василий
2002-10-05 23:23
2002.10.28
Где можно достать драйвер 1.0 для ODBC ?


1-92516
123000
2002-10-14 20:41
2002.10.28
Richedit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский