Психбольница в руках пациентов - [96]

Шрифт
Интервал

Высококлассное изменение размеров

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

Наше решение: небольшой красный уголок, располагающийся в правом нижнем углу отсканированного изображения. При наведении курсора уголок едва заметно меняется в размерах, увеличивается на пару пикселов. Это я и называю «активным откликом», он показывает Малкольму, что объект поддается прямому манипулированию. Если Малкольм щелкнет мышью и потащит за красный уголок, изображение (в реальном времени) станет больше или меньше, в зависимости от направления движения уголка. Изображение всегда сохраняет правильную пропорцию. Непропорциональное масштабирование – это уже работа Магнума, который для таких целей применяет Photoshop.

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



Высококлассный поворот изображения

Графические программы обычно позволяют вращать отсканированное изображение. Вот три базовых применения этой функции:

• Вращение фрагментов изображений с целью изменения композиции.

• Придание нужной ориентации изображению, которое сканировалось с небольшим отклонением от вертикальной ориентации.

• Придание нужной ориентации перевернутому или перекошенному изображению.

В большинстве программ для сканеров, к которым относится и предшественник Peacock, реализован инструмент вращения, посредством которого пользователь может решать все три задачи. Мы посмотрели на всю эту мощь и сложность с точки зрения Чеда, Малкольма и Магнума, после чего решили избрать совершенно иной подход.

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

А вторая – выравнивание – не может получаться хорошо из-за ограничений технологии. Практически все растрирующие устройства, такие как видеоэкраны, сканеры, принтеры, визуализируют прямые линии, отклоненные от горизонтали или вертикали на один – два градуса, в виде жутких зазубренных линий. Такую линию не распрямить никакой компьютерной обработкой, а стандартная функция поворота в таком случае создает головокружительные оптические иллюзии. Лекарство хуже болезни. Хуже того, программный код, выполняющий поворот изображения на пару градусов, отличается большой сложностью и изощренностью. В большинстве других сканирующих продуктов эта абсурдно бесполезная функция с гордостью выпячивается – прекрасная иллюстрация того, что По Бронсон назвал слепотой, улучшающей зрение разработчиков программного обеспечения.

Если изображение отсканировано с одно-двухградусным отклонением, то быстрее, лучше и проще скорректировать его расположение и отсканировать повторно. Сканирующее устройство не просто поддерживает такое решение своими точными механизмами и высокой скоростью, но и с самого начала практически исключает возможность ошибки.

Третий вариант – изменение ориентации. Можно случайно отсканировать изображение вверх ногами или «уронив» его набок. Программным способом можно легко и быстро повернуть изображение на 90, 180 или 270 градусов, сориентировав его правильно.

Поэтому мы спроектировали инструмент «переориентации» вместо инструмента «вращения» и снова приложили все усилия для создания лучшего варианта. В правом верхнем углу отсканированного изображения присутствует синий кружок, сходный с красным уголком инструмента масштабирования. Если расположить курсор над кружком, кружок слегка увеличивается в размерах, снова намекая на активность.

Если Малкольм щелкнет мышью и потащит за кружок, изображение опоясывает ярко-зеленый контур. Этот контур называется «прицелом» и подсказывает, как повернется изображение, когда Малкольм отпустит кнопку мыши. Как только кружок заходит за очередной угол изображения, зеленый прицел поворачивается в следующее из возможных положений: на угол 90, 180, 270 градусов. Малкольм заранее знает, какое влияние на изображение окажет его действие. Он отчетливо понимает, что поворот возможен лишь на фиксированные углы, а свободное вращение или коррекция результата невозможны. Все наши персонажи мгновенно понимают, как работать с инструментом.



Первоклассные результаты

По просьбе клиента мы провели пользовательское тестирование продукта и обнаружили удивительную вещь. Мы ожидали, что всем участникам тестирования очень понравится наш интерфейс, что они смогут понять его и легко им воспользоваться. Удивило то, что все как один участники высказались в том смысле, что Peacock – «самый мощный». С точки зрения количества функций это было далеко от истины. С точки же зрения доступности имеющихся возможностей продукт стал мощнее.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.