Программирование >>  Автоматически обновляемые приложения 

1 ... 83 84 85 [ 86 ] 87 88 89 ... 170


Необходимо помнить, что кнопка Пуск у пользователя может находиться не только в нижнем левом углу, но и в других позициях. Свой пример я писал применительно к конкретному случаю на моем Рабочем столе.

Примечание

Пример программной эмуляции нажатия кнопок мыши находится в папке 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 на прилагаемом диске.



1 ... 83 84 85 [ 86 ] 87 88 89 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика