|
Программирование >> Автоматически обновляемые приложения
Необходимо помнить, что кнопка Пуск у пользователя может находиться не только в нижнем левом углу, но и в других позициях. Свой пример я писал применительно к конкретному случаю на моем Рабочем столе. Примечание Пример программной эмуляции нажатия кнопок мыши находится в папке APICIicks на прилагаемом диске. Рисование Наверняка, вам приходилось рисовать с помощью мыши в каком-нибудь графическом редакторе, например, в стандартной утилите Paint, которая входит в состав любой операционной системы Windows. Мы попробуем написать свою программу, позволяющую выполнять эти же действия. Рассмотрим этот процесс подробнее. Рисование начинается с помещения указателя мыши на специально отведенную область для рисования. Это может быть клиентская область окна нашей программы или графическое поле. Следующий этап - нажатие кнопки мыши. Причем допускается нажатие как левой, так и правой кнопки мыши. В некоторых редакторах используются разные варианты, в зависимости от задумок разработчика. После нажатия кнопки мы перемещаем мышь в другое место, не отпуская кнопки. Во время перемещения за указателем остается след, позволяющий нам контролировать движения мы- const mt MOUSEEVENTF MOVE = 0x0001; const int MOUSEEVENTF LEFTDOWN = 0x0002; const int MOUSEEVENTF LEFTUP = 0x0004; const int MOUSEEVENTF RIGHTDOWN = 0x0008; const int MOUSEEVENTF RIGHTUP = 0x0010; const int MOUSEEVENTF ABSOLUTE = 0x8000; private void buttonl Click(object sender, EventArgs e) { Перемещаем в район ьснопки Пуск mouse event(MOUSEEVENTF MOVE MOUSEEVENTF ABSOLUTE, 400, 65000, О, UlntPtr.Zero); Нажимаем и отпускаем правую кнопку мыши mouse event(MOUSEEVENTF RIGHTDOWN, О, О, О, UlntPtr.Zero); mouse event(MOUSEEVENTF RIGHTUP, О, О, О, UlntPtr.Zero); private void Forml MouseMove(object sender, MouseEventArgs e) { if (bPaint) { Создадим объект Graphics для рисования Graphics g = CreateGraphics(); Определяем координаты мыши при перемещении int x rrati = е.Х; int y rrati = e.Y; Рисуем g. DrawLine (p, x md, y md, x rrati, y rrati) ; Передаем координаты мыши в переменные класса x md = x rrati; y md = y rrati; ши. И, наконец, последняя операция- отпускание кнопки мыши. Естественно, рисование тут же прекращается. Описанное действие можно повторять неограниченное число раз. Таким образом, рисование заключается в обработке событий мыши MouseDown, MouseMove И MouseUp. ВооружившисЬ полученными знаниями, приступим к созданию простого графического редактора (рис. 8.1), код которого представлен в листинге 8.12. i Листинг 8.12. Простейший графический редактор Координаты мыши в момент нажатия int x md, y md; Будем рисовать пером синего цвета и толщиной 3 пиксела Реп р = new Pen(Color.Blue, 3); Отслеживаем нажатия кнопки, чтобы знать когда пользователь заканчивает рисовать bool bPaint; private void Forml MouseDown(object sender, MouseEventArgs e) { Начинаем рисовать bPaint = true; Координаты мыши в момент нажатия x md = е.Х; y md = e.Y; д.Dispose О; private void Forml MouseUp(object sender, MouseEventArgs e) { bPaint = false; private void Forml MouseClick(object sender, MouseEventArgs e) { Очистим форму от наших художеств при нажатии правой кнопки мыши if (е.Button == MouseButtons.Right) Graphics g = CreateGraphics(); g.Clear(this.BackColor); g.Dispose(); Рис. 8.1. Простейший графический редактор в действии Примечание Пример простейшего графического редактора находится в папке Sim-plePaint на прилагаемом диске.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |