Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2011, 10:46   #1
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию Движение мыши

Всем доброго времени суток........есть 2 точки, начальная (Х0,У0) и вторая (Х2,У2), вычисляется угол, если угол ближе к 90градусам то мышка двигается по оси Ох, если линия ближе к 180градусам то мышка двигается по оси Оу и т.д. (получается как линейка)
Ставим 2 точки и вычисляем угол.........как описать условия для перемещения мыши?

Код:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  GetCursorPos(curs);
  Edit1.Text := inttostr(curs.X);
  Edit2.Text := inttostr(curs.Y);
  if GetAsyncKeyState (VK_SHIFT) <> 0  then  begin
    if not bCenter then begin
      x0:=curs.X;
      y0:=curs.Y;
      Label3.Caption := 'Координата 1 точки: X = '+inttostr(X0)+' Y = '+inttostr(Y0);
      bCenter:=True;
    end else begin
      x2:=curs.X;
      y2:=curs.Y;
      Label4.Caption := 'Координата 2 точки: X = '+inttostr(X2)+' Y = '+inttostr(Y2);
    end;
  end else begin
    bCenter:=False;
     if bLine then

      F := Round (abs(180*arctan2(Y2-Y0,X2-X0)/pi)); //угол в градусах
      Label5.Caption := 'Угол = '+ floattostr(F);

      //ограничиваем мышь

  end;
 end;
Изображения
Тип файла: jpg ugol.JPG (6.6 Кб, 90 просмотров)
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...

Последний раз редактировалось Claster; 12.07.2011 в 10:54.
Claster вне форума Ответить с цитированием
Старый 12.07.2011, 10:49   #2
JetUS
Пользователь
 
Аватар для JetUS
 
Регистрация: 23.09.2009
Сообщений: 27
По умолчанию

Попробуй создать прямоугольную область шириной (или высотой) в 1 пиксел при помощи ClipCursor.
JetUS вне форума Ответить с цитированием
Старый 12.07.2011, 11:07   #3
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

А что если описать так? к какому углу ближе....

case F of

Код:

      0..45: ;
      45..90: ;
      90..130: ;
      130..180: ;
      180..220: ;
      220..270: ;
      270..320: ;
      320..360: ;
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 12.07.2011, 13:04   #4
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

Опять же меняем условие...............извините..... ..дело в том что не правильно понял задание.....и так:
Угол необходим для того что бы ограничить движение мыши под определенным углом

На Рис1: показан пример для вычисления угла
на Рис2: как может двигаться мышь после вычисления угла

теперь вроде все правильно.....нужно ограничить движение мыши под определенным углом
Изображения
Тип файла: jpg ugol.JPG (15.9 Кб, 129 просмотров)
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение со скоростью света и быстрее скорости света - Сверхсветовое движение Alar Свободное общение 354 13.11.2011 21:32
Движение morgan97 Паскаль, Turbo Pascal, PascalABC.NET 2 24.03.2011 20:46
Ограничить движение мыши в StringGrid??? Dersou Помощь студентам 4 10.08.2010 15:53
TСhart, клик мыши и координаты XY, Определение координат оси при клике мыши Aravild Компоненты Delphi 1 31.01.2009 16:28
Движение объекта на форме по щелчку мыши Dux Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 08.12.2008 06:35