impoly

(Не рекомендуемый) Создать перетаскиваемый, изменяемый размер многоугольника

impoly не рекомендуется. Используйте новую Polygon вместо этого объект. Можно также использовать новую функцию удобства создания информация только для чтения drawpolygon. Другая опция является Polyline объект, который позволяет вам создать открытый многоугольник или polyline форму. Для получения дополнительной информации см. раздел Вопросов совместимости.

Описание

Система координат impoly объект инкапсулирует интерактивный многоугольник над изображением.

Можно добавить вершины и настроить размер и положение многоугольника при помощи мыши. Многоугольник также имеет контекстное меню, которое управляет аспектами его внешнего вида и поведения. Для получения дополнительной информации см. раздел Использование.

Создание

Описание

h = impoly начинает интерактивное размещение многоугольника на текущей системе координат и возвращает impoly объект.

h = impoly(hparent) начинает интерактивное размещение многоугольника на объекте, заданном hparent.

пример

h = impoly(hparent,position) создает перетаскиваемый, изменяемый размер многоугольника с вершинами в координатах, заданных position.

пример

h = impoly(___,Name,Value) задает пары "имя-значение", которые управляют поведением многоугольника.

Входные параметры

расширить все

Указатель на родительский объект, заданный как указатель. Родительским элементом обычно является объект осей, но может также быть любой другой объект, который может быть родительским элементом an hggroup объект.

Положение многоугольников, заданное как матрица n -by-2. Эти два столбца определяют x - и y - координаты, соответственно, каждой из n вершин.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Функция ограничения положения, заданная как разделенная разделенными запятой парами, состоящая из 'PositionConstraintFcn' и указатель на функцию. fcn вызывается каждый раз, когда мышь перетаскивается. Можно использовать эту функцию для управления, куда можно перетащить многоугольник. Смотрите справку для setPositionConstraintFcn для получения информации о действительных указателях на функцию.

Многоугольник закрыт, задается как разделенная разделенными запятой парами, состоящая из 'Closed' и true или false. Когда установлено значение true (по умолчанию), impoly создает замкнутый многоугольник, то есть рисует прямую линию между последней заданной вершиной и первой вершиной, заданной для создания замкнутой области. Когда Closed является false, impoly не соединяет последнюю вершину с первой вершиной, создавая открытый многоугольник (или полилинию).

Типы данных: logical

Свойства

расширить все

Информация только для чтения можно удалить, задав как true или false.

Типы данных: logical

Использование

Когда вы звоните impoly с интерактивным синтаксисом, указатель изменяется на перекрестие при наведении изображения. Щелкните мышью и перетащите мышь, чтобы задать вершины многоугольника и настроить размер, форму и положение многоугольника. По умолчанию impoly рисует прямую линию, соединяющую последнюю точку, которую вы нарисовали с первой точкой, но можно управлять этим поведением с помощью Closed параметр.

Многоугольник также поддерживает контекстное меню, которое можно использовать для управления аспектами его внешнего вида и поведения. Варианты выбора в контекстном меню варьируются в зависимости от положения указателя мыши на краю многоугольника (или в любом месте области) или на одной из вершин. Рисунок показывает контекстное меню, когда указатель находится на многоугольник, но не на вершине.

В таблице перечислены интерактивные модели поведения, поддерживаемые impoly.

Интерактивное поведениеОписание
Закрытие многоугольника.

Используйте любой из следующих механизмов:

  • Наведите указатель мыши на начальную вершину выбранного многоугольника. Указатель изменяется на круг. Нажмите любую из кнопок мыши.

  • Дважды кликните левую кнопку мыши. Это действие создает вершину в точке под мышью и рисует прямую линию, соединяющую эту вершину с начальной вершиной.

  • Щелкните правой кнопкой мыши. Это действие рисует линию, соединяющую последнюю выбранную вершину с начальной вершиной; он не создает новую вершину.

Добавление новой вершины.Наведите указатель мыши на ребро многоугольника. Нажмите и удерживайте клавишу A. Форма указателя изменяется. Нажмите левую кнопку мыши, чтобы создать новую вершину в этом положении на линии.
Перемещение вершины. (Изменение формы многоугольника.)Наведите указатель мыши на вершину. Указатель изменяется на круг. Щелкните и перетащите вершину в новое положение.
Удаление вершины.Наведите указатель мыши на вершину. Форма изменяется на окружность. Щелкните правой кнопкой мыши и выберите Delete Vertex из контекстного меню вершин. Это действие удаляет вершину и корректирует форму многоугольника, рисуя новую прямую линию между двумя вершинами, которые были соседями удаленной вершины.
Удаление многоугольникаПереместить указатель мыши внутрь многоугольника или на одну из линий, определяющих многоугольник, а не на его вершине. Щелкните правой кнопкой мыши и выберите Delete из контекстного меню. Чтобы удалить эту опцию из контекстного меню, установите Deletable свойство false: h = impoly(); h.Deletable = false;
Перемещение многоугольника.Переместите указатель мыши внутрь многоугольника. Указатель изменяется на гибкую форму. Щелкните мышью и перетащите мышь, чтобы переместить многоугольник.
Изменение цвета многоугольникаПереместите указатель мыши внутрь многоугольника. Щелкните правой кнопкой мыши и выберите Set Color из контекстного меню.
Получение координат вершин Переместите указатель мыши внутрь многоугольника. Щелкните правой кнопкой мыши и выберите Copy Position из контекстного меню. impoly копирует n -by-2 массив, содержащий x - и y - координаты каждой вершины в буфер обмена. n - количество заданных вершин .

Функции объекта

Каждый impoly объект поддерживает несколько методов. Тип methods impoly чтобы увидеть полный список.

addNewPositionCallbackДобавьте коллбэк с новой позицией к объекту информация только для чтения
createMaskСоздайте маску в изображении
deleteУдалить указатель объекта
getColorПолучите цвет, используемый для рисования объекта информация только для чтения
getPositionВозврат текущей позиции объекта информация только для чтения
getPositionConstraintFcnВозвращает указатель на функцию ограничения текущего положения
removeNewPositionCallbackУдалите коллбэк с новой позицией из объекта информация только для чтения
resume(Не рекомендуемый) Возобновить выполнение командной строки MATLAB
setClosedУстановите поведение замыкания информации только для чтения объекта
setColorУстановите цвет, используемый для рисования объекта информация только для чтения
setConstrainedPositionУстановите объект информация только для чтения в новое положение
setPosition(Не рекомендуемый) Переместить объект информация только для чтения в новое положение
setPositionConstraintFcnУстановите функцию ограничения положения объекта информация только для чтения
setVerticesDraggableУстановите вершинное поведение объекта информация только для чтения
wait(Не рекомендуемый) Блокируйте командную строку MATLAB до завершения создания информация только для чтения

Примеры

свернуть все

Отобразите изображение.

imshow('gantrycrane.png')

Нарисуйте на изображении многоугольник, задав расположение пяти вершин.

h = impoly(gca,[188,30; 189,142; 93,141; 13,41; 14,29]);

Установите желтый цвет многоугольника.

setColor(h,'yellow');

Определите функцию для обратного коллбэка новой позиции. Эта функция отображает текущее положение многоугольника всякий раз, когда он перемещается.

addNewPositionCallback(h, @(p) title(mat2str(p,3)));

Создайте функцию, которая ограничивает движение многоугольника при помощи makeConstrainToRectFcn, указание контура изображения в качестве пределов. Принудительное применение функции граничных ограничений setPositionConstraintFcn.

fcn = makeConstrainToRectFcn('impoly',get(gca,'XLim'),get(gca,'YLim'));
setPositionConstraintFcn(h,fcn);

Отобразите изображение.

figure
imshow('gantrycrane.png');

Создайте многоугольник, задав несколько вершин, но оставьте его незавершенным, чтобы можно было закончить его в интерактивном режиме. Пример задает Closed на false так, чтобы многоугольник оставался открытым. При наведении курсора на одну из конечных точек многоугольника форма курсора изменяется на окружность.

h = impoly(gca,[203,30; 202,142; 294,142],'Closed',false);

Заполните многоугольник. Захват одного из концов существующих линий. Удлинить линию путем перетаскивания ее в другой угол формы, которую вы хотите создать. Затем при наведении курсора на линию нажмите и удерживайте клавишу A, чтобы добавить вершину к строке. После создания вершины можно перетащить ее в любое место, где требуется создать нужную фигуру. Продолжите перетаскивание линии и добавление вершин по мере необходимости. Для получения дополнительной информации см. раздел Использование.

Совет

Если вы используете impoly с помощью оси, которая содержит объект изображения и не задает функцию ограничения положения, пользователи могут перетащить многоугольник за пределы области изображения и потерять многоугольник. При использовании с осями, созданными plot функция, пределы осей автоматически расширяются, когда многоугольник перетаскивается за пределы области осей.

Вопросы совместимости

расширить все

Не рекомендуемый запуск в R2018b

Введенный в R2007b