Рис. 3.22. Окно программы рисования, в которой есть часы текущего времени вы полнения
Ввод и взаимодействие с пользователем
Решение этой проблемы тоже можно отыскать. В нашей программе рисования для вывода объектов на экран можно использовать дисплейный список, в который следует вносить объекты по мере обработки команд пользователя. После этого можно при каждом переключении очищать рабочий буфер и формировать в нем изображения всех объектов, уже включенных к этому времени в дисплейный список. Правда, для этого программу придется значительно усложнить, особенно если для вывода символов также используются свои дисплейные списки.
Но можно поступить и проще, сделав так, чтобы изображение каждого объекта оказалось сразу в обоих буферах- и в экранном, и в рабочем. OpenGL и некоторые другие графические системы позволяют таким образом настроить режим работы системы, чтобы можно было одновременно формировать изображение во множестве буферов. Мы рассмотрим подробно эту технологию позже, в главе 9, когда будем обсуждать и другие проблемы использования буферов.
3.10. Разработка интерактивных графических программ Формально определить перечень характеристик хорошей интерактивной графической программы довольно сложно, но отличить хорошую программу этого типа от плохой, поработав с обеими, можно достаточно быстро. Хорошая программа, как правило, располагает следующими функциональными возможностями.
1. Плавное изображение динамических сцен без видимого '"дерганья" объектов на экране.
2. Наличие нескольких устройств ввода, с помощью которых можно управлять характеристиками объектов на экране, в том числе и их динамикой.
3. Разнообразие методов ввода и отображения информации.
4. Доступный и интуитивно понятный интерфейс пользователя.
5. Обратная связь с пользователем.
6. "Лояльное" отношение к возможным ошибкам пользователя.
7. В программе должны учитываться как зрительные, так и моторные свойства человека-оператора, т.е. его способность воспринимать зрительную информацию и реагировать на нее, выполняя какие-либо действия с устройствами ввода.