Перемещение точне

 
0
 
.NET
ava
IUMag | 16.03.2013, 21:49

g.DrawEllipse(New Pen(Brushes.Black, 2), New Rectangle(e.X - 1, e.Y - 1, 2, 2))

Нарисовал элипсы, не подскажите, как можно реализовать перемещение элипсов движением мышки?
Kommentare (3)
ava
diadiavova | 16.03.2013, 20:58 #
Цитата


Перемещение точне

 smile 

Объект Graphics только прорисовывает изображение, после этого с ним уже ничего сделать нельзя. Нужно либо перерисовывать для каждого нового положения мыши(что проблематично), либо вообще реализовывать эту затею под WPF, там используется векторная графика, а не растровая, так что под подобные задачи эта технология заточена лучше.
ava
IUMag | 16.03.2013, 21:03 #
Если перерисовывать, то нужно перерисовывыть холст в событии MouseMove ?
ava
diadiavova | 16.03.2013, 21:13 #
Уж не знаю, что там за холст, но перерисовывать придется всю картину. К тому же надо будет включить двойную буферизацию, чтобы это дело не дрожало. Для этого придется для каждого объекта картины, создать свой класс, который будет себя прорисовывать, загрузить экземпляры этого класса в коллекцию и при каждой перерисовке контрола, придется эту коллекцию обходить и вызывать метод прорисовки. Это вкратце. Таким образом перерисовку надо выполнять в обработчике события Paint или, если это делается в собственном контроле, то переопределить в нем метод OnPaint, а для того, чтобы это дело вызывалось не только в стандартных ситуациях прорисовки, а и при движении мыши, в обработчике события MouseMove надо будет вызывать метод Invalidate.
Для понимания того, как это все работает, можно поупражнятся, но для решения практической задачи лучше WPF. Можно еще взглянуть на Visual Basic Power Pack, там базовые типы, для таких фигур уже реализованы и можно под винформами что-то наваять, но тем не менее настоятельно рекомендую WPF
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden