Есть два варианта.
1-й. При перемещении элемента рисуется его контур с использованием xor. Такой метод позволяет удалить нарисованный контур сделав вывод два раза подряд. Окончательная отрисовка производится после отпускания мыши.
2-й. Можно реализовать буферизированный вывод. Схема рисуется в отдельном буфере (напр. Canvas отдельного BitMap) и сам процесс отрисовки не виден. Когда буфер нарисован, он быстренько выводится на экран. В этом случае мерцания видно не будет.
В любом варианте нужно не забыть отключить отрисовку фона окна
обработав событие
procedure WMEraseBkGnd(var Message:TWMEraseBkGnd); message WM_ERASEBKGND;
Если этого не сделать, при вызове метода PAint будет сначала рисоваться фон, потом схема. Это и дает мерцание.
|