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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2008, 03:36   #1
Iogan Gamba Puti
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 10
Счастье Определить попала ли точка в область?

Попрошу дельных советов или ссылку на источник,по следующему вопросу:
Пользователь кликает мышкой по форме и надо определить попал ли он в область(сектор-кусок окр-ти).Стоит ли делать,по методу-проверка на совпадение цвета пикселя области и формы или лучше заморачиваться на системы координат и уравнение окружности?
Iogan Gamba Puti вне форума Ответить с цитированием
Старый 10.05.2008, 07:21   #2
frodo
Пользователь
 
Регистрация: 06.04.2008
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Iogan Gamba Puti Посмотреть сообщение
Попрошу дельных советов или ссылку на источник,по следующему вопросу:
Пользователь кликает мышкой по форме и надо определить попал ли он в область(сектор-кусок окр-ти).Стоит ли делать,по методу-проверка на совпадение цвета пикселя области и формы или лучше заморачиваться на системы координат и уравнение окружности?
Помоему лучше по формулам и соординатам, намного проше!
frodo вне форума Ответить с цитированием
Старый 10.05.2008, 07:32   #3
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

А чтобы меньше возиться (например, если фигура - сложная), Windows GDI предоставляет для этого регионы и набор функций для работы с ними, скажем, PtInRegion.
Region Functions

Последний раз редактировалось B_N; 10.05.2008 в 07:34.
B_N вне форума Ответить с цитированием
Старый 10.05.2008, 20:34   #4
Iogan Gamba Puti
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 10
По умолчанию

Огромное спасибо,с регионами разобрался.Только не получается получить координаты мыши.Щас глупость спрошу,но подскажите,пожалуйсто:
Для событи щелчка левой кнопки мыши пишу процедуру:
Код:
procedure WMLButtonDown(var Msg : TWMMouse);message 
WM_LBUTTONDOWN;
.....
procedure TForm1.WMLButtonDown(var Msg: TWMMouse);
begin
xPos := GET_X_LPARAM(lParam);
yPos := GET_Y_LPARAM(lParam);

end;
Соотвественно не работает.Просто в разделе помощи к ф-ции PtInRegion,
Написано,что чтобы определить координаты мыши делайте так:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
а как на Delphi сделать?
Iogan Gamba Puti вне форума Ответить с цитированием
Старый 10.05.2008, 21:25   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

http://programmersforum.ru/showthread.php?t=18165
-------------------------------
P.S.
Собственно, о чём это я ....... Ведь

Код:
type
  TWMMouse = packed record
    Msg: Cardinal;
    Keys: Longint;
    case Integer of
      0: (
        XPos: Smallint;
        YPos: Smallint);
      1: (
        Pos: TSmallPoint;
        Result: Longint);
  end;
И X, и Y приходят прямо в параметре...
B_N вне форума Ответить с цитированием
Старый 11.05.2008, 22:29   #6
Iogan Gamba Puti
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 10
По умолчанию

В этом случае компилятор ругается на синтаксис:
X := SMALLINT( lParam and $FFFF);
Y := SMALLINT( (lParam shr 16) and $FFFF);
Во втором случае,я так понимаю при обработке любого сообщения Windows
передает и координаты мыши заодно через эту структуру.
Но обращение TWMMouse.XPos у меня не заработало
Можно ещё использовать вариант GetCursorPos().Здесь возникает вопрос,как экранные координаты перевести в логические,чтобы можно было работать с регионами.
Iogan Gamba Puti вне форума Ответить с цитированием
Старый 12.05.2008, 00:04   #7
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

GetCursorPos(Pt : TPoint) разьве это не логическая ? Ты получаеш переменную Pt и выдёргиваеш из неё координаты по отдельности: Pt.X, Pt.Y (Не бейте если что-то не то сказал ^_^)
Zeraim вне форума Ответить с цитированием
Старый 13.05.2008, 00:15   #8
Iogan Gamba Puti
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 10
По умолчанию

Я иммел ввиду ,что Windows GDI->Region Functions и GetCursorPos(Pt : TPoint) в разных координатных системах.
Iogan Gamba Puti вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
область видимости переменных. С++ Prestigio Помощь студентам 10 07.07.2008 15:55
Среди 20 введёных чисел определить чётные, распечатать их, определить min Spade Помощь студентам 4 15.06.2008 18:39
Дана точка A с координ. X и Y, определить... Cullen Паскаль, Turbo Pascal, PascalABC.NET 5 30.01.2008 00:22
область видимости ? artem779 Общие вопросы Delphi 3 14.09.2007 09:34
Точка на полигоне? Роман Радер Общие вопросы Delphi 14 12.02.2007 17:08