PDA

Просмотр полной версии : алгоритм выделения объектов


elendor
15.09.2009, 17:57
22944
как в данном случае определить что желтый круг находиться под областью выделения, а красный не до конца? И как вообще определить что под областью выделения что-то есть?

Прошу помощи.:)

etc
15.09.2009, 18:01
Rectangle.intersects
Геометрия простейшая.

elendor
15.09.2009, 18:04
если бы знал - не спрашивал:)

etc
15.09.2009, 18:06
Так в чем проблема, конкретно? Как проверить несколько прямоугольников на пересечение с другими?

elendor
15.09.2009, 18:10
чет не пойму, мне нужно получить эти объекты, чтобы, например графически изменить

Добавлено через 51 секунду
нужно сделать выделение, подобно тому как выделение ярлыков на рабочем столе

etc
15.09.2009, 18:14
У вас есть N объектов. С каждого можно получить его границы (bounds) методом getBounds (или getRect), который возвращает прямоугольники Rectangle. Также у вас есть Rectangle выделения. Поочередно проверяя пересечения каждого из bounds с прямоугольником выделения, записываете в массив ссылки на эти объекты. Или сразу ставите им свойство selected (если таковое есть и вами описано) в true.

elendor
15.09.2009, 18:16
а другого варианта нет что ли? а если там объектов под "выделением" будет 1000??? этож будет долго

etc
15.09.2009, 18:23
Миллисекунд 10—20 в самом худшем случае.

elendor
15.09.2009, 18:34
ну допустим можно просчет сделать после отпускания кнопки мышки, а если просчет будет вести в реал-тайм?...

etc
15.09.2009, 18:39
Послушайте, когда у вас возникнет проблема производительности (если вообще возникнет), тогда и переживайте по этому поводу.

wvxvw
16.09.2009, 00:24
а другого варианта нет что ли? а если там объектов под "выделением" будет 1000??? этож будет долго

Если у вас в дисплей листе будет 1000 объектов, да с фильтрами и градиентами на них, у вас уже будут лаги, так что как бы вы ни выделяли, это на ситуацию мало повлияет.