Рисование фигур
Привычные нам графические редакторы для настольных ПК предоставляют пользователю множество готовых примитивов. Например, графический редактор, встроенный в Microsoft Word 2003, содержит 115 готовых автофигур.
Взаимодействие с пользователем в таких редакторах можно описать при помощи следующего юз-кейса:
1. Программа предоставляет набор готовых фигур.
2. Пользователь выбирает фигуру из набора.
3. Пользователь задает расположение и размеры фигуры.
4. Программа рисует фигуру в указанном месте и заданного размера.
Между программой и пользователем происходит разделение обязанностей. Фактически, обязанность по рисованию фигуры программа берет на себя.
Такое разделение объясняется двумя причинами:
1. Несовершенством устройства ввода (при помощи мыши достаточно сложно нарисовать плавный контур).
2. Отсутствием у большинства пользователей навыков рисования (гораздо проще выбрать готовую фигуру, нежели нарисовать ее с нуля).
Заметим, что паттерн поведения "выбор из готового" характерен именно для мыши, т.к. с помощью нее как раз-таки удобно указывать и выбирать. Поэтому при проектировании интерфейса графического редактора для настольного ПК мы, скорее всего, не уйдем от привычной схемы. Но если проектировать интерфейс взаимодействия с пользователем для более совершенного устройства ввода (например, для планшетного ПК с мультитач экраном), то задачу рисования фигур можно решить иначе.
Одна из основных проблем для пользователей-непрофессионалов - это рисование контура правильной формы. Очень трудно без должной подготовки нарисовать эллипс или плавную кривую. Нередко вместо кривой получается зубчатая линия, а вместо эллипса - закругленная закорючка.
Возникает задача:
1. С одной стороны, хотелось бы использовать возможности мультитач экрана и обеспечить привычный для художников ввод "данных" (рисование контура будто бы карандашом).
2. С другой стороны, хотелось бы помочь пользователю с отсутствием художественных навыков создавать плавные контуры даже если у него дрожит рука.
Решение этой задачи можно найти, если перераспределить обязанности между пользователем и программой. Пусть пользователь рисует фигуру, а программа - исправляет погрешности и распознает стандартные формы.
Новый механизм взаимодействия пользователя с программой можно описать в виде такого юз-кейса:
1. Пользователь выбирает место для рисования.
2. Пользователь рисует контур фигуры заданной формы и размера.
3. Программа корректирует нарисованный контур.
4. Программа распознает стандартные формы и заменяет ими нарисованный контур.
Жесть сколько трепа и ни одной мысли "как" такое реализовать - ни архитектуры решения, ни возможных классов
ОтветитьУдалитьАнонимный Коллега,
ОтветитьУдалитьТема данной статьи - проектирование эргономичного интерфейса. Если вас интересует реализация, то материал уже давно есть в интернете. Посмотрите, например, здесь http://pulseneon.ru/archives/38.
ссылка не работает...
УдалитьРоман, видимо уже удалили. Но в русской Википедии есть целая статья, посвящённая управлению программой при помощи жестов мыши со ссылками на библиотеки, которые выполняют распознавание - 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
Удалить