Описание пользователя
Глава 2. Интерфейс пользователя
§2.10. Редактирование векторной картинки блока
§2.10.8. Добавление в картинку вложенных систем координат
Описывается добавление в векторную картинку блока дополнительных систем координат, которые могут содержать внутри себя другие элементы. Такие системы могут перемещаться, поворачиваться и масштабироваться как единое целое.
Размещение элементов картинки внутри вложенной системы координат дает возможность перемещать, поворачивать и масштабировать эти элементы как единое целое, причем не только вручную в редакторе, но и связав параметры системы координат с переменными блока. Использование систем координат – ключевой момент в создании анимированных картинок. Отдельные элементы тоже могут быть связаны с переменными, но эта связь, как правило, ограничивается шириной, высотой, цветом и, для текстов, отображаемым содержимым. Программные перемещения, повороты и скрытие частей картинки выполняется при помощи изменения значений переменных, с которыми связаны содержащие эти части системы координат.
Для создания вложенной системы координат следует нажать на панели элементов в левой части окна кнопку «» (рис. 152 а, вместо этого можно выбрать пункт меню «»), переместить курсор мыши в точку рабочего поля, в которой будет находиться начало координат вложенной системы, и нажать левую кнопку мыши. После этого поверх текущего окна редактора картинки откроется новое, точно такое же окно для редактирования содержимого системы координат (сначала может даже показаться, что старое окно очистилось, но это не так), в заголовке которого, кроме имени блока, будет также отображаться уровень вложенности системы (рис. 152 б). Если система координат создана внутри самой картинки, ее уровень вложенности будет равен единице, если же она создана внутри другой вложенной системы, ее уровень будет на единицу большим уровня содержащей системы.

(а)

(б)
Рис. 152. Создание вложенной системы координат: выбор режима и точки начала
координат (а), новое окно редактора для созданной системы (б)
Фактически, система координат представляет собой «картинку внутри картинки», поэтому добавление элементов в нее осуществляется точно так же, как и добавление элементов в картинку. При необходимости, внутри системы можно создать другие вложенные системы координат, внутри них – другие, и т.д. Вложенность систем координат друг в друга не ограничена (в §2.10.12 будет приведен пример использования нескольких вложенных систем). Пока идет редактирование содержимого системы координат, редактировать содержащую ее систему или картинку нельзя – новое открытое окно редактора тоже модальное, и оно блокирует любые действия пользователя в других окнах RDS. Для того, чтобы вернуться к редактированию вышестоящей системы координат, следует либо просто закрыть окно этой (изменения при этом не будут потеряны), либо нажать кнопку «» на панели функций (это крайняя левая кнопка, внешне напоминающая кнопку выхода в родительскую папку «проводника» Windows), либо выбрать одноименный пункт в меню «». Если в системе координат, окно редактора которой закрывается, не осталось или не было добавлено ни одного элемента, такая пустая система автоматически уничтожается. Следует помнить, что закрытие окна редактора системы координат фиксирует все изменения, сделанные пользователем в этой системе, после этого они не могут быть отменены по отдельности. Чтобы снова открыть окно редактора системы координат, следует дважды щелкнуть на ней левой кнопкой мыши либо выбрать в ее контекстном меню пункт «».
Рис. 153. Выделенная система координат
После возврата из редактирования системы координат все содержащиеся в ней элементы выделяются как единое целое (рис. 153), причем кроме обычных девяти квадратных маркеров выделения для выделенной системы координат изображаются три дополнительных: большой круглый маркер, указывающий положение начала координат системы и позволяющий перемещать это начало координат, не перемещая сами элементы, и два маленьких круглых маркера, соединенные пунктирной линией, служащие для поворота системы. Если в параметрах редактора разрешено отображение центров и вспомогательных меток, начало координат системы, кроме большого маркера выделения, будет также отмечаться перекрестием.
Линия между маленькими маркерами выделения показывает положение горизонтальной оси вложенной системы координат, причем длинный отрезок этой линии указывает положительное направление этой оси. Если угол поворота системы координат равен нулю, пунктирная линия будет проходить горизонтально, и ее длинный отрезок будет находиться справа от начала координат, как на рис. 153). Чтобы повернуть систему координат на произвольный угол, следует перетащить мышью один из двух маленьких круглых маркеров (не важно, какой именно) – в процессе его перемещения контурное изображение элементов в подсистеме будет поворачиваться вокруг ее начала координат (рис. 154). После отпускания маркера система примет новое положение.

(а)

(б)

(в)
Рис. 154. Поворот системы координат: захват маркера (а), перемещение и
отпускание маркера (б), повернутая система (в)
Следует помнить, что не все элементы картинки могут поворачиваться. Если в системе координат находятся рельефный прямоугольник, прямоугольник со скругленными углами, растровый рисунок или блок текста, такая система не может нормально поворачиваться: некоторые из этих элементов останутся не повернутыми, некоторые исказятся. Такие элементы не следует помещать в системы координат, которые планируется поворачивать.
Точка начала координат системы является точкой ее привязки к рабочему полю картинки (координатами всей подсистемы считаются именно координаты этой точки) и осью поворота всех ее элементов. Положение этой точки можно изменить, перетащив большой круглый маркер выделения (рис. 155). Того же самого эффекта можно добиться, переместив относительно координатных осей все элементы системы при ее редактировании, однако, в этом случае все остальные элементы картинки, находящиеся за пределами редактируемой системы координат, не будут видны, что не всегда удобно. Например, совмещение осей вращения нескольких систем координат без изменения взаимного расположения их элементов гораздо проще выполнить перетаскиванием их маркеров, чем подгонкой положения элементов внутри редактора каждой системы и самих систем на рабочем поле.

(а)

(б)

(в)

(г)
Рис. 155. Перемещение начала системы координат: захват маркера (а),
перемещение и отпускание маркера (б,в), система теперь будет
поворачиваться вокруг новой точки (г)
Изменение размеров системы координат, как и любого другого графического элемента, производится перетаскиванием одного из девяти квадратных маркеров выделения, расположенных по ее краям (рис. 156). Однако, в отличие от многих других элементов, высоту и ширину системы нельзя изменять независимо. Ее размер изменяется за счет умножения координат и размеров всех вложенных элементов на один и тот же масштабный множитель, поэтому ширина и высота системы координат всегда изменяются синхронно. Следует учитывать, что, при изменении размеров системы перетаскиванием маркеров, положение ее начала координат тоже может измениться, поскольку неподвижным в этом случае всегда остается маркер выделения, симметричный перетаскиваемому (на рис. 156 – верхний центральный).

(а)

(б)

(в)
Рис. 156. Изменение размеров системы координат: захват маркера (а),
перемещение и отпускание маркера (б), новый размер системы (в)
Для того, чтобы изменить параметры системы координат (запретить поворот или изменение размера, ввести точное значение угла поворота и т.п.) или связать ее с переменными блока, следует открыть окно параметров системы. Двойной щелчок открывает окно редактора ее элементов, поэтому для вызова окна параметров следует использовать пункт «» контекстного меню системы координат. Окно содержит две вкладки: «» и «» (рис. 157).

(а)

(б)
Рис. 157. Окно параметров системы координат: вкладки «» (а) и «» (б)
На вкладке «» можно ввести точные значения координат начала системы (значения задаются в точках экрана для масштаба 100%), угла поворота (может быть задан как в градусах, так и в радианах, единица изменения выбирается в выпадающем списке) и масштабного коэффициента, на который будут умножены координаты и размеры всех вложенных элементов системы координат при ее рисовании. Кроме того, на ней можно установить флажки «» и «», на которых следует остановиться подробнее.
Флажок «» запрещает системе координат поворачиваться вместе с картинкой блока или той системой координат, в которой она сама находится. При этом в редакторе картинки ее все равно можно повернуть, перетащив один из ее маленьких круглых маркеров выделения (см. рис. 154) или введя значение угла в окне параметров. Но этот, заданный при редактировании, угол поворота останется неизменным при вращении картинки блока и всей содержащей данную систему иерархической цепочки систем координат.
Рис. 158. Дополнительная вложенная
система координат (справа)
На рис. 158 изображена система координат, ранее показанная на рис. 153 – 156, в которую добавлена еще одна внутренняя система координат, содержащая прямоугольник и две линии со стрелками вдоль осей. Если у этой дополнительной системы не устанавливать флажок «», при повороте внешней системы внутренняя будет поворачиваться вместе с ней (рис. 159 а), если установить, она будет сохранять исходный угол поворота независимо от положения внешней системы (рис. 159 б). Начало координат внутренней системы при этом будет перемещаться при повороте внешней независимо от состояния флажка. Запрет поворота часто используется при создании анимированных картинок блоков, чтобы, например, числовые значения, отображаемые в картинке, не поворачивались и оставались легко читаемыми.
Флажок «» работает точно так же: если он установлен, масштабный множитель (а, значит, и размер) системы координат не будет изменяться при изменении масштабного множителя внешней системы. При этом в редакторе все равно можно будет изменить размеры этой системы координат или точно задать ее масштабный множитель в окне параметров – именно эти значения и будут определять внешний вид элементов системы координат.

(а)

(б)
Рис. 159. Поворот системы координат при разрешенном (а)
и запрещенном (б) повороте внутренней системы
На вкладке «» окна параметров можно связать положение, угол поворота, масштабный множитель и видимость системы с переменными блока, а также задать для нее целый идентификатор, который модель блока будет получать при щелчках мышью на содержимом этой подсистемы (идентификаторы элементов картинки и их использование рассматриваются в §3.6.11 описания пользователя и §2.12.1 руководства программиста).
Значения переменных, имена которых указаны в полях «» и «», считаются числом точек экрана в масштабе 100%, и будут добавляться к координатам начала системы – таким образом, при положительных значениях переменных все содержимое системы будет смещаться вниз и вправо. При желании, для каждой из двух переменных можно указать дополнительный вещественный множитель – в этом случае соответствующие смещения в точках экрана будут вычисляться как произведения значения переменной и ее множителя.
Значение переменной, указанной в поле «», добавляется к уже имеющемуся углу поворота системы. В выпадающих списках справа от поля ввода имени переменной можно выбрать, будет значение переменной считаться углом в радианах или в градусах, а также направление, в котором отсчитывается этот добавочный угол: по часовой стрелке или против часовой стрелки.
Значение переменной, указанной в поле «», умножается на уже заданный масштабный коэффициент системы, увеличивая и уменьшая тем самым размер всех ее элементов. Положение начала координат системы при этом не меняется – система расширяется и сжимается вокруг этой точки.
Наконец, значение логической или целой переменной, указанной в поле «», используется для включения и отключения изображения всех элементов данной системы координат. Справа от выпадающего списка имени переменной можно указать, как ее значение будет влиять на рисование всего содержимого системы координат:
- «истинно» – система координат рисуется только при ненулевом (истинном) значении переменной;
- «ложно» – система координат рисуется только при нулевом (ложном) значении переменной;
- «равно» – система координат рисуется, только если значение переменной будет равно целой константе, введенной в поле ввода, появляющееся справа;
- «не равно» – система координат рисуется, только если значение переменной не будет равно целой константе, введенной в поле ввода, появляющееся справа.
С работой с вложенными системами координат непосредственно связаны два пункта меню редактора: «» и «». Первый из них создает новую пустую систему координат и перемещает в нее все элементы, выделенные в данный момент на рабочем поле редактора. Второй, наоборот, извлекает все элементы из выделенной системы и размещает их на рабочем поле, уничтожая систему координат, оставшуюся пустой (информация о ее повороте и масштабном множителе при этом теряется). В некоторых случаях разместить графические элементы на рабочем поле среди прочих, а потом поместить их в систему координат, бывает удобнее, чем создать новую пустую систему и размещать элементы в ней, не видя ее окружения.