вторник, 7 декабря 2010 г.

Проектирование взаимодействия с пользователем для графического редактора

Рисование фигур

Привычные нам графические редакторы для настольных ПК предоставляют пользователю множество готовых примитивов. Например, графический редактор, встроенный в Microsoft Word 2003, содержит 115 готовых автофигур.
Взаимодействие с пользователем в таких редакторах можно описать при помощи следующего юз-кейса:

1.      Программа предоставляет набор готовых фигур.
2.      Пользователь выбирает фигуру из набора.
3.      Пользователь задает расположение и размеры фигуры.
4.      Программа рисует фигуру в указанном месте и заданного размера.

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


Такое разделение объясняется двумя причинами:

1.      Несовершенством устройства ввода (при помощи мыши достаточно сложно нарисовать плавный контур).
2.      Отсутствием у большинства пользователей навыков рисования (гораздо проще выбрать готовую фигуру, нежели нарисовать ее с нуля).

Заметим, что паттерн поведения "выбор из готового" характерен именно для мыши, т.к. с помощью нее как раз-таки удобно указывать и выбирать. Поэтому при проектировании интерфейса графического редактора для настольного ПК мы, скорее всего, не уйдем от привычной схемы. Но если проектировать интерфейс взаимодействия с пользователем для более совершенного устройства ввода (например, для планшетного ПК с мультитач экраном), то задачу рисования фигур можно решить иначе.

Одна из основных проблем для пользователей-непрофессионалов - это рисование контура правильной формы. Очень трудно без должной подготовки нарисовать эллипс или плавную кривую.  Нередко вместо кривой получается зубчатая линия, а вместо эллипса - закругленная закорючка.

Возникает задача:

1.      С одной стороны, хотелось бы использовать возможности мультитач экрана и обеспечить привычный для художников ввод "данных" (рисование контура будто бы карандашом).
2.      С другой стороны, хотелось бы помочь пользователю с отсутствием художественных навыков создавать плавные контуры даже если у него дрожит рука.

Решение этой задачи можно найти, если перераспределить обязанности между пользователем и программой. Пусть пользователь рисует фигуру, а программа - исправляет погрешности и распознает стандартные формы.


Новый механизм взаимодействия пользователя с программой можно описать в виде такого юз-кейса:

1.      Пользователь выбирает место для рисования.
2.      Пользователь рисует контур фигуры заданной формы и размера.
3.      Программа корректирует нарисованный контур.
4.      Программа распознает стандартные формы и заменяет ими нарисованный контур.