Перетаскивание Rectangle по PictureBox

NDAleksey
Дата: 16.05.2014 16:35:39
Доброго всем дня!
Не ругайте, что вопрос бородатый, но в инете пригодного решения для себя я не нашел. Первый раз работаю с графикой в C#.Net.
Задача просто - на PictureBox куча Rectanle-ов в виде кружков, и еще есть сетка по всему боксу и нужно по нему мышью перетаскивать кружки. Сделал так,что кружки перетаскиваются, но за ними остается след в виде "змейки".
Вопрос - стоит ли после каждого смещения кружка чистить канву или есть какой-то Pen или Brush mode, который позволит избежать перерисовки канвы, ибо в этом случае придется мудрить с сеткой?
pation
Дата: 16.05.2014 18:02:49
NDAleksey
Вопрос - стоит ли после каждого смещения кружка чистить канву или есть какой-то Pen или Brush mode, который позволит избежать перерисовки канвы, ибо в этом случае придется мудрить с сеткой?

да, нужно чистить

PS. не рисуй через GDI+
NDAleksey
Дата: 16.05.2014 18:54:50
pation
да, нужно чистить

PS. не рисуй через GDI+


Повторюсь - у меня не просто одинокие кружочки, а есть еще сетка на канве, а у сетки масштаб ячейки меньше диаметра кружка. Перерисовка всей канвы - а это сетка + все кружочки - происходит с ощутимой задержкой. А GDI+ вынужден использовать по условию задания.

В архиве готовое решение. Задача - избавиться от задержек при перемещении.
pation
Дата: 16.05.2014 19:12:51
NDAleksey
Повторюсь - у меня не просто одинокие кружочки, а есть еще сетка на канве, а у сетки масштаб ячейки меньше диаметра кружка. Перерисовка всей канвы - а это сетка + все кружочки - происходит с ощутимой задержкой. А GDI+ вынужден использовать по условию задания.

В архиве готовое решение. Задача - избавиться от задержек при перемещении.


Повторюсь - да при данной реализации нужно чистить (а потом перерисовывать всё и сетку и кружки)
NDAleksey
Дата: 16.05.2014 19:24:07
pation
Повторюсь - да при данной реализации нужно чистить (а потом перерисовывать всё и сетку и кружки)


Но при большом количестве кружков или при детальной (крупномасштабной) сетке происходят эти задержки..... От них не вариант избавиться?
pation
Дата: 16.05.2014 20:01:04
NDAleksey
pation
Повторюсь - да при данной реализации нужно чистить (а потом перерисовывать всё и сетку и кружки)


Но при большом количестве кружков или при детальной (крупномасштабной) сетке происходят эти задержки..... От них не вариант избавиться?


повторюсь - не рисуй через GDI+
NDAleksey
Дата: 16.05.2014 20:43:20
pation
повторюсь - не рисуй через GDI+


Мне кажется, или меня тут троллят этим "повторюсь"? = ) Как бы то ни было, я получил то, что хотел. Я выводил из буфера на канву только при событии перерисовки pictureBox-а.... А нужно было делать эту операцию на pictureBox_MouseMove!
mmnick
Дата: 19.05.2014 16:34:39
двойная буферизация вам в помощь, плюс Invalidate - прежнего положения, никогда не перерисовывайте всю канву целиком.