Как можно ограничить перекрестие гинпута одним сюжетом? - PullRequest
1 голос
/ 10 мая 2010

Я написал небольшую программу на MATLAB с графическим интерфейсом. Внутри графического интерфейса у меня есть, помимо прочего, сюжет, на котором пользователь должен иметь возможность выбрать две точки. Для этого я использую функцию ginput , которая создает перекрестие для выбора. К сожалению, перекрестие расширяет все окно и не ограничивается сюжетом, который выглядит не очень красиво и сбивает с толку пользователя. Как можно ограничить прицел только областью участка?

Ответы [ 3 ]

4 голосов
/ 11 мая 2010

Попробуйте использовать getpts, который не создает перекрестие; с помощью getpts вы также можете указать оси, из которых вы хотите выбрать пользователя, как в

[x,y] = getpts(ax);

Единственная проблема с getpts - нет способа ограничить его ровно двумя точками. Но у него есть приятная особенность: пользователь может отменить выбор точек, нажав клавишу DELETE, и подтвердить точки, нажав клавишу ВВОД.

Если внимательно изучить документацию ginput, описанное вами поведение предназначено и, по-видимому, неизбежно

от

doc ginput

Нажатие на оси делает эти оси текущими осями. Даже если вы задаете текущие оси до вызова ginput, любая ось, по которой вы щелкаете, становится текущей осью, а ginput возвращает точки относительно этих осей. Если вы выбираете точки из нескольких осей, возвращаемые результаты относятся к системе координат осей, из которых они получены.

2 голосов
/ 10 марта 2011

Попробуйте этот слегка измененный скрипт ginput на File Exchange , который принимает желаемое перекрестие в качестве входных данных. Потому что он модифицирован из ginput rev. 5.32.4.4, я рекомендую сделать новую версию из последней версии.

1 голос
/ 12 января 2013

попробуйте ginputax. Это именно то, что вы хотите. Эта функция работает как ginput, но она адаптирована для использования в GUI.

Вот пример того, как его использовать. http://www.mathworks.com/matlabcentral/fileexchange/39799

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...