Страница 1 из 1

Работа с мышью

Добавлено: 18 сен 2011, 20:13
BodyZ
Доброго времени суток :)
Подскажите пожалуйста как можно определить
над какими объектами слоев была нажата кнопка мыши.
Заранее спасибо :wink:

Re: Работа с мышью

Добавлено: 18 сен 2011, 20:54
novia
конкретизируйте, пожалуйста, вопрос.
для какой священной цели нужно знать над каким объектом произошел клик? (вы что-то программируете свое или это процесс работы со стандартными функциями?)

какая версия ArcGIS у вас установлена (в 10-ке появился специальный подсказчик)

в каком состоянии нажимаете кнопку мыши (какой инструмент выбран)?

Re: Работа с мышью

Добавлено: 18 сен 2011, 21:10
BodyZ
Я программирую.
Необходимо чтобы программно можно было
определить какие объекты и каких слоев находятся под мышью во время нажатия левой кнопки мыши

Re: Работа с мышью

Добавлено: 18 сен 2011, 21:22
novia
не силен в этой области.
но попробуйте посмотреть как работает стандартная идентификация (инструмент Identify), наверняка есть метод, реализующий то, что вам нужно.

пишете на arcobjects?

Re: Работа с мышью

Добавлено: 18 сен 2011, 23:00
Дмитрий Барышников
У вас есть экранные координаты в пикселах.
У интерфейса IScreenDisplay (http://resources.esri.com/help/9.3/ArcG ... splay2.htm) есть свойство IDisplayTransformation (http://resources.esri.com/help/9.3/ArcG ... mation.htm).
Например, используйте метод ToMapPoint интерфейса IDisplayTransformation чтобы пересчитать в координаты карты. А далее простой пространственный запрос.

Вот примеры
1. http://resources.esri.com/help/9.3/arcg ... 7592e0.htm
2. http://forums.arcgis.com/threads/19513- ... iven-layer

Re: Работа с мышью

Добавлено: 22 сен 2011, 11:07
BodyZ
Доброго времени суток.
Спасибо за помощь :)
Извините, может быть глупый вопрос :oops: , но как мне организовать обработчик мыши. :?:
Заранее спасибо

Re: Работа с мышью

Добавлено: 22 сен 2011, 13:15
Дмитрий Барышников
Создаете кнопку типа tool - http://edndoc.esri.com/arcobjects/9.2/C ... /ITool.htm
все обработчики там есть.

Re: Работа с мышью

Добавлено: 23 сен 2011, 08:07
BodyZ
Большое спасибо за помощь. :wink:
С Вами, как всегда, приятно работать.
Чувствуется, что хелп ЕСРИ перерыт по несколько раз. 8)
Спасибо, что помогаете не заблудиться в его дебрях :)

Re: Работа с мышью

Добавлено: 23 сен 2011, 16:19
BodyZ
Доброго времени суток.
Что-то я торможу :oops:
Сделал так

Код: Выделить всё

ESRI.ArcGIS.Display.IDisplayTransformation dtransf = new DisplayTransformationClass();
            IPoint point = dtransf.ToMapPoint(X, Y);
Нужного результата не добился.
Может интерфейс

Код: Выделить всё

IDisplayTransformation
тянуть от какого то слоя, или от проекта?
Заранее спасибо

Re: Работа с мышью

Добавлено: 23 сен 2011, 16:58
BodyZ
Разобрался с преобразованием.
Нужно было сделать так

Код: Выделить всё

IMxDocument m_doc = m_application.Document as IMxDocument;
IActiveView pActiveView = m_doc.FocusMap as IActiveView;
IPoint point1 = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);

Подскажите как теперь правильно организовать пространственный
запрос, если необходимо проанализировать несколько слоев
в FocusMap.
Заранее спасибо за ответ

Re: Работа с мышью

Добавлено: 26 сен 2011, 23:09
BodyZ
Нашел такой вариант.
Executing spatial queries
Пока разбираюсь