Координаты мыши относительно кнопки

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

aLers
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 29.03.2011 (Вт) 10:42

Координаты мыши относительно кнопки

Сообщение aLers » 29.03.2011 (Вт) 11:01

Имеется большая кнопка, разбитая не несколько зон (их много, поэтому городить на каждую зону отдельную кнопку нецелесообразно).
Требуется чтобы после клика по этой кнопке определялись координаты клика относительно кнопки (или формы). Дальнейшая несложная обработка этих координат позволит на базе одной кнопки создать некую "матрицу кнопок".
Получать координаты относительно экрана у меня получилось, а вот относительно формы или кнопки - не соображу как...
Подскажите, плз., чувстую, что ответ элементарный.

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Координаты мыши относительно кнопки

Сообщение Admiralisimys » 30.03.2011 (Ср) 9:26

В событии формы OnMouseClick через передаваемый аргумент передаются в числе прочего и координаты относительно формы (клиентские).
Код: Выделить всё
    Protected Overrides Sub OnMouseClick(ByVal mea As MouseEventArgs)
        MsgBox(mea.X & " " & mea.Y, MsgBoxStyle.Information, "Hello")
    End Sub

Получать координаты относительно экрана у меня получилось

Из экранных в клиентские (формы) координаты можно преобразовать посредством функции PointToClient.

А обратное преобразование доступно через PointToScreen.

aLers
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 29.03.2011 (Вт) 10:42

Re: Координаты мыши относительно кнопки

Сообщение aLers » 30.03.2011 (Ср) 23:12

Спасибо, вроде разобрался:
Код: Выделить всё
        Dim coordinate As Point
        coordinate = PointToClient(Control.MousePosition)
        Label1.Text = CStr(coordinate.X)
        Label2.Text = CStr(coordinate.Y)

Этот маленький тест теперь выводит координаты клика относительно формы.
Все правильно?

Добавлено позже: теперь встала проблема создания прозрачной кнопки. Не кнопки с цветом формы, а именно прозрачной, чтобы нижележащие на форме элементы были видны сквозь эту кнопку...

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Координаты мыши относительно кнопки

Сообщение Admiralisimys » 01.04.2011 (Пт) 22:35

Если результат удоволетворяет то вполне.
На досуге рекомендую получить эти же координаты через событие с аргуметом типа MouseEventArgs (см. выше).

Не создавал прозрачные кнопки, но если б понадобилось - http://lmgtfy.com/?q=Transparent+Buttons+WinForms

aLers
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 29.03.2011 (Вт) 10:42

Re: Координаты мыши относительно кнопки

Сообщение aLers » 01.04.2011 (Пт) 23:08

Admiralisimys писал(а):Не создавал прозрачные кнопки, но если б понадобилось

Очень элегантно! Надо взять на вооружение... :D
На самом деле там я уже был и убедился, что простых "штатных" способов не существует. Поэтому я буду свой "координатный обработчик" вешать не на кнопку, а на событие мыши (клик на форме)...


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

    TopList