Ватсон Карли
Шрифт:
Преобразования координат
В этом разделе мы рассматриваем реализацию вспомогательных методов, которые были использованы в примере
Первое.
Мы также используем метод, который делает приблизительно обратное преобразование в
Существуют еще три метода, вызываемые из процедуры обработки, которые отвечают на двойной щелчок пользователя мышью. Прежде всего — метод, определяющий индекс строки, которая выведется в заданных мировых координатах. В отличие от
Наконец, иногда необходимо делать преобразование между индексом строки и координатами страницы, а не мировыми координатами. Это делает следующий метод:
Эти методы сами по себе не кажутся особенно интересными, они иллюстрируют общую технику, которую, по всей видимости, вам придется часто использовать. Применяя GDI+, мы иногда оказываемся в ситуации где заданы некоторые координаты (например, координаты места, где пользователь щелкнул мышью) и требуется определить, какой элемент изображен в этом месте. Или наоборот, для заданного определенного элемента вывода необходимо приблизительно определить, где он должен быть выведен. Следовательно, при создании приложений GDI+ может оказаться полезным умение написать методы, эквивалентные методам преобразований координат, проиллюстрированным здесь.
Ответ на ввод пользователя
До сих пор, за исключением пеню File в примере
Заставить приложение GDI+ ответить на пользовательский ввод в действительности значительно проще, чем писать код для рисования на экране, и мы в главе 9 уже рассмотрели, как обрабатывать ввод пользователя. По сути для этого необходимо переопределить методы из класса
Для случая обнаружения, когда пользователь щелкнул мышью или переместил мышь, функции которые можно будет переопределить включают следующие:
Метод | Когда вызывается |
---|---|
OnClick(EventArgs е) | Сделан щелчок мышью |
OnDoublеСlick(EventArgs е) | Сделан двойной щелчок мышью |
OnMouseDown(MouseEventArgs е) | Нажата левая кнопка мыши |
OnMouseHover(MouseEventArgs е) | Мышь остается неподвижной после перемещения |
OnMouseMove(MouseEventArgs е) | Мышь перемещается |
OnMouseUp(MouseEventArgs e) | Левая кнопка мыши отпущена |