Инструменты с нагруженным курсором
Когда речь идет об инструментах с нагруженным курсором, пользова' тель точно так же выбирает инструмент или фигуру из палитры, но на этот раз курсор не переключается в постоянный режим (до следующе' го переключения) работы с этим инструментом, а нагружаетсяэкземп' ляром выбранного объекта.
Щелкнув один раз внутри области рисования, пользователь создаст в точке щелчка экземпляр объекта. Нагруженный указатель плохо подходит для выполнения функций (хотя Microsoft повсюду использу' ет его для функции копирования формата), но отлично работает с гра' фическими объектами. В частности, он широко применяется в прило' жении PowerPoint. Пользователь выбирает прямоугольник в графиче' ской палитре – и курсор превращается в модальный инструмент, на' груженный ровно одним прямоугольником.
Во многих программах с нагруженными курсорами, например в Power' Point, пользователь не всегда может поместить объект простым щелч' ком. Ему приходится перетаскиванием растягивать ограничивающий прямоугольник, чтобы задать размер будущего объекта. В некоторых приложениях, например Visual Basic, работают оба метода. Одиноч' ный щелчок при нагруженном курсоре создает один экземпляр объек' та с размером по умолчанию. Новый экземпляр находится в выделен' ном состоянии и окружен маркерами(которые мы обсудим в следую' щем разделе), готовый к немедленному изменению размера и формы. Такой двойной режим, включающий в себя либо одиночный щелчок для размещения объекта с размером по умолчанию, либо растягивание ограничивающего прямоугольника для размещения объекта с произ' вольным размером, безусловно, является самым гибким и очевидным и понравится большинству пользователей.
Иногда программы с нагруженным курсором забывают изменить его внешний вид. Например, Visual Basic превращает указатель в пере' крестие, когда он нагружен, а Delphi никак не меняет его. Когда кур' сор переходит в модальный режим, то есть когда щелчок приводит
к созданию объекта, очень важно визуально отражать это состояние. К нагруженному указателю нужны также хорошие идиомы отмены, иначе как вы разгрузите курсор, ничего не повредив?
Манипулирование объектами
Как и элементами управления, объектами данных на экране (особенно графическими объектами в программах рисования и моделирования) можно манипулировать путем щелчка с перетаскиванием. Объекты (не пиктограммы, которые мы обсуждали ранее в этой главе) подверга' ются перетаскиванию при выполнении трех основных операций: пере' мещение, изменение размера и изменение формы.
Перемещение
Перемещение– это простое действие, состоящее из щелчка по объекту и перетаскивания его в другое место. Наибольшие сложности при реа' лизации перемещения вызваны тем, что оно узурпирует место других идиом непосредственного манипулирования: функция перемещения требует, чтобы пользователь выполнил щелчок и перетаскивание, и тем самым делает перетаскивание недоступным для других применений.
Самым распространенным способом разрешения этого конфликта яв' ляется отведение под функцию перемещения определенной области объекта. Например, в Windows или Macintosh вы можете переместить окно, ухватившись за его заголовок. Остальная часть окна не является активной с точки зрения задачи перемещения, и идиома перетаскива' ния остается доступной внутри окна, как того и ожидает пользова' тель. Единственным намеком на то, что окно можно перемещать, яв' ляется цвет его заголовка и некоторая трехмерность. Эта неброская подсказка является чистейшей воды идиомой (к счастью, весьма эф' фективной).
В общем случае следует обеспечивать более явные визуальные под' сказки об отзывчивости некоторой области интерфейса. Для заголовка окна можно было бы использовать курсорную подсказку или заливку заголовка рельефной текстурой, которая говорит о его «перетаскивае' мости».
Чтобы переместить объект, сначала нужно его выделить. Вот почему выделение должно происходить по событию «кнопка мыши нажата». В этом случае пользователь сможет сразу выполнить перетаскивание, то есть ему не придется сначала отпускать кнопку мыши, чтобы выде' лить объект, а затем снова нажимать, чтобы начать движение, – для перемещения объекта достаточно будет просто нажать и потянуть мышь. Щелкнуть по объекту и тут же перетащить его легким движе' нием руки – гораздо более естественное движение.
Однако это создает проблемы с перемещением непрерывных данных. Например, в редакторе Word компания Microsoft реализовала неук' люжую операцию «щелчок – ожидание – щелчок» для перетаскива' ния фрагментов текста: вы должны сперва щелкнуть и перетащить указатель мыши, чтобы выделить фрагмент, затем подождать пример' но секунду и снова щелкнуть – и тогда только приступать к перетаски' ванию выделенного текста. Решение неудачное, однако для непрерыв' ных данных хорошей альтернативы нет. Если бы разработчики из Mi' crosoft согласились обойтись без использования служебных клавиш для расширения выделения, эти клавиши можно бы задействовать для выделения и переноса предложения в одно движение. Впрочем, это не решило бы проблему выделения и перемещения произвольных фрагментов текста.
Для ограничения перетаскивания одной осью (горизонтальной либо вертикальной) часто используется служебная клавиша (скажем,
<Shift>). Такого типа перетаскивание называется направляемым. На' правляемое перетаскивание очень полезно в приложениях для графи' ки, особенно при рисовании аккуратных диаграмм. Первые пять'де' сять пикселов пути курсора определяют преобладающее направление перетаскивания. Если пользователь начинает перетаскивание в боль' шей степени по горизонтали, то в дальнейшем оно будет ограничено именно горизонтальной осью. Некоторые приложения позволяют пользователю менять решение (и направление перетаскивания) в сере' дине пути, отклоняя курсор на определенное расстояние.
Другой способ помочь пользователям при перемещении объектов на экране – направляющие. В наиболее популярном варианте (например, Adobe Illustrator) это специальные линии, которые пользователь мо' жет применять в качестве вспомогательных при размещении объек' тов. Как правило, приложению можно предписать выполнять «при' вязку» к направляющим: когда в режиме привязки объект оказывает' ся в пределах определенного расстояния от направляющей линии, приложение считает, что объект следует выровнять по этой направ' ляющей. Скорректировать такое перемещение, как правило, можно с клавиатуры.
Новаторская и полезная вариация этого подхода – интеллектуальные направляющие (Smart Guides), созданные OmniGraffle. Они обеспечи' вают визуальную обратную связь и помогают располагать объект исхо' дя из (весьма разумного) предположения о том, что пользователям требуется выравнивать объекты, создавая колонки и ряды с равномер' ными интервалами. Продукт Google SketchUp (более подробно описы' ваемый далее) сходным образом помогает пользователю с трехмерны' ми эскизами.
Изменение размера и формы
Когда речь идет об окнах графического пользовательского интерфейса, реальной функциональной разницы между изменением размера и из' менением формы нет. Пользователь может в один прием скорректиро' вать размеры окна и соотношение сторон – достаточно перетащить эле' мент управления, расположенный в правом нижнем углу окна. Можно также потянуть за любую границу окна. Взаимодействия такого рода обычно поддерживаются очевидными курсорными подсказками.
Описанные идиомы хороши для изменения размеров окна, но в случае с графическим объектом в программе рисования или моделирования важно сообщить пользователю о том, какой объект выделен и где сле' дует щелкнуть, чтобы изменить размер или форму этого объекта. Идиома изменения размеров графического объекта должна визуально выделяться среди элементов рисунка и отличаться от элементов объ' екта, к которому она относится. Кроме того, она не должна заслонять сам объект и область вокруг него. Наконец, элемент управления, от' ветственный за изменение размеров, не должен мешать выполнению этой операции.
Есть популярная идиома, удовлетворяющая всем этим требованиям. Она состоит из восьми маленьких черных квадратиков, расположен' ных по углам прямоугольного объекта и в центре каждой его стороны. Эти квадратики, изображенные на рис. 19.11, называются маркерами размера, или просто маркерами.
Маркеры полезны и проектировщикам, поскольку позволяют обозна' чать выделение. Это возникающий естественным путем симбиоз, по' скольку объект обычно должен быть выделен перед изменением его размера.
Рис. 19.11. У выделенного объекта есть восемь маркеров: в каждом углу
и в центре каждой стороны. Маркеры обозначают выделение и являются удобной идиомой изменения размеров и формы объекта. Иногда маркеры реализуются с инверсией цвета пикселов, но в многоцветном окружении они могут затеряться в «шуме». Изображенные на рисунке маркеры Microsoft PowerPoint 2007 обладают некоторым объемом, который контрастирует со слайдом, облегчая восприятие
Маркер, расположенный в центре стороны, двигает только эту сторону и оставляет неподвижными прочие. Маркеры в углах перемещают обе прилегающие стороны, что вполне ожидаемо с позиций интуиции.
Маркеры часто заслоняют объект, к которому относятся, и потому не очень удобны в качестве постоянно присутствующих элементов управ' ления. Вот почему мы не видим их на окнах верхнего уровня (впрочем, окна в некоторых версиях интерфейса Open Look от Sun имеют нечто подобное). В таких ситуациях для изменения размеров более уместна идиома рамки или «уголка». Если выделенный объект не помещается на экране, маркеры могут оказаться за пределами видимости. Находясь за пределами экрана, они не только недоступны для непосредственного манипулирования, но и бесполезны в качестве индикаторов выделения.
Как и в случае перетаскивания, процесс изменения размера часто на' правляют с помощью служебных клавиш. Это еще один пример идио' мы направляемого перетаскивания: клавиша <Shift> дает возможность сохранить соотношение сторон объекта при изменении размеров. Та' кая возможность весьма удобна. В некоторых случаях бывает полезно ограничивать изменение размера вертикалью, горизонталью либо опре' деленным отношением сторон.
До сих пор в нашем разговоре о маркерах предполагалось, что марки' руемый объект является прямоугольником или легко вписывается в прямоугольник. Хорошо, если пользователь рисует организацион' ную диаграмму, а что делать с изменением формы более сложных объ' ектов? Существует мощная и полезная разновидность маркера – вер- шинный маркер.
Во многих программах объекты на экране изображаются с помощью полилиний. Полилиния– термин, употребляемый в программирова' нии графики для обозначения ломаной линии, заданной массивом уз' лов (вершин). Если первая и последняя вершины совпадают, полили' ния является замкнутой и образует многоугольник. Когда такой объ' ект выделяется, программа помещает маркер в каждую вершину по' лилинии (а не в восемь точек описанного вокруг нее прямоугольника, как в случае с простыми объектами). Пользователь может перетаски' вать любую вершину полилинии независимо от других и изменять форму объекта локально, не затрагивая объект в целом. Это проиллю' стрировано на рис. 19.12.
Объекты произвольной формы в программе PowerPoint изображаются с помощью полилиний. Если щелкнуть по такому объекту, появится ограничивающий многоугольник с восемью стандартными маркера' ми. Если же щелкнуть по объекту правой кнопкой мыши и выбрать из контекстного меню пункт Начать изменение узлов (Edit Points), то огра' ничивающий прямоугольник исчезнет – и вместо него появятся вер' шинные маркеры.Важно, что доступны обе идиомы: первая необходи' ма для пропорционального масштабирования объекта, а вторая – для точного редактирования его формы.
Рис. 19.12. Вершинные маркеры обязаны своим названием тому, что
у каждой вершины многоугольника имеется один маркер. Пользователь может щелкнуть по любому маркеру и перетащить его, изменяя форму многоугольника в рамках одного сегмента. Эта идиома полезна главным образом для графических приложений
Если рассматриваемый объект состоит из кривых, а не прямых линий, оптимальным механизмом изменения размеров являются маркеры Безье. Подобно вершине полилинии маркер Безье отмечает точку объ' екта, но также еще и форму кривой, проходящей через точку. Эффек' тивное управление кривыми Безье требует значительных навыков, и такую функциональность лучше оставить для специализированных приложений рисования и моделирования.