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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

4 комментария:

  1. Жесть сколько трепа и ни одной мысли "как" такое реализовать - ни архитектуры решения, ни возможных классов

    ОтветитьУдалить
  2. Анонимный Коллега,

    Тема данной статьи - проектирование эргономичного интерфейса. Если вас интересует реализация, то материал уже давно есть в интернете. Посмотрите, например, здесь http://pulseneon.ru/archives/38.

    ОтветитьУдалить
    Ответы
    1. ссылка не работает...

      Удалить
    2. Роман, видимо уже удалили. Но в русской Википедии есть целая статья, посвящённая управлению программой при помощи жестов мыши со ссылками на библиотеки, которые выполняют распознавание - http://ru.wikipedia.org/wiki/%D0%96%D0%B5%D1%81%D1%82%D1%8B_%D0%BC%D1%8B%D1%88%D1%8C%D1%8E

      Удалить