Показать сообщение отдельно
  #6  
Старый 13.03.2008, 14:51
AlexBlack AlexBlack вне форума
Прохожий
 
Регистрация: 12.10.2007
Сообщения: 12
Репутация: 10
По умолчанию

Есть два варианта.

1-й. При перемещении элемента рисуется его контур с использованием xor. Такой метод позволяет удалить нарисованный контур сделав вывод два раза подряд. Окончательная отрисовка производится после отпускания мыши.

2-й. Можно реализовать буферизированный вывод. Схема рисуется в отдельном буфере (напр. Canvas отдельного BitMap) и сам процесс отрисовки не виден. Когда буфер нарисован, он быстренько выводится на экран. В этом случае мерцания видно не будет.

В любом варианте нужно не забыть отключить отрисовку фона окна
обработав событие

procedure WMEraseBkGnd(var Message:TWMEraseBkGnd); message WM_ERASEBKGND;

Если этого не сделать, при вызове метода PAint будет сначала рисоваться фон, потом схема. Это и дает мерцание.
Ответить с цитированием