powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / не получается поимать коардинаты мышки
9 сообщений из 9, страница 1 из 1
не получается поимать коардинаты мышки
    #39374532
IgorShal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
застрял как поимать коардинаты мышки на входе в кнопку...ловить получается но не получается поимать самую первую коардинату на входе и тогда получится расчитать с какой стороны был вход..я так думаю...или есть болие умный вариант?:)

вход допускается только с правой стороны. при входе в любую другую сторону кнопка меняет цвет и запрещенные вызовы EventHandlers то есть кнопка не становится дисейбл или скрытой (Visible), потому что тогда мы больше не будут получать события от кнопки, и это нас не устраивает.
Чтобы пометить пользователю что разрешается вводить только с правой стороны мы красим толстые линии 8 пикселей на всех других сторонах зеленой кнопки. (прикрепил картинку)

использую mousehover  и mousemove
для возврата в нормальное состаяние mouseleave
...
Рейтинг: 0 / 0
не получается поимать коардинаты мышки
    #39374666
Фотография Ken@t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorShal,

1. В случае тача , ваша логика не работает.
2. Движением называется изменение состояния физической системы с течением времени.
Следствие: необходимо не определение идиотической первой точки , а определение вектора движения.
...
Рейтинг: 0 / 0
не получается поимать коардинаты мышки
    #39374699
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логика может не сработать и в случае мыши, ибо при резком движении мыши курсор перемещается скачками (Штирлиц бежал скачками....)

Так что придется отслеживать ВСЕ перемещения мыши, и в момент mouseenter строить этот вектор от предыдущей точки.
...
Рейтинг: 0 / 0
не получается поимать коардинаты мышки
    #39374743
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shocker.Proи в момент mouseenter строить этот вектор от предыдущей точки.
Меня данная задачка заинтересовала и я провел несколько экспериментов.

Нет такого момента, если двигать мышью достаточно быстро. Не - и все.
Так же не возникают события mousemove и mouseleave
...
Рейтинг: 0 / 0
не получается поимать коардинаты мышки
    #39374784
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

Что ты имеешь ввиду? Что курсор просто "перепрыгивает" через кнопку на большой скорости?
Или что ты можешь поймать на кнопке mouseover без предшествующего mouseenter?
...
Рейтинг: 0 / 0
не получается поимать коардинаты мышки
    #39374811
IgorShal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2,

у меня пока что не получается поймать ету точку

class GateButton : Button
{

protected override void OnPaint(PaintEventArgs pevent)
{
base.OnPaint(pevent);
Graphics g = pevent.Graphics;
Pen green_pen = new Pen(Color.Green, 8);
g.DrawLine(green_pen, 0, 3, Width, 3);
g.DrawLine(green_pen, 0, Height - 3, Width, Height - 3);
g.DrawLine(green_pen, 3, 0, 3, Height);


}


protected override void OnMouseMove(MouseEventArgs e)
{


if ((e.Location.X == (this.Size.Width )))// && (e.Location.Y >= this.Size.Height-10))
{
this.BackColor = Color.Green;
}
base.Text = base.Location.X + ":" + base.Location.Y;

base.OnMouseMove(e);
}

protected override void OnMouseLeave(EventArgs e)
{
base.BackColor = SystemColors.Control;
base.OnMouseLeave(e);
}
...
Рейтинг: 0 / 0
не получается поимать коардинаты мышки
    #39374816
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shocker.ProCat2,

Что ты имеешь ввиду? Что курсор просто "перепрыгивает" через кнопку на большой скорости?
Или что ты можешь поймать на кнопке mouseover без предшествующего mouseenter?
Что "перепрыгивает"
...
Рейтинг: 0 / 0
не получается поимать коардинаты мышки
    #39374820
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
IgorShal,

Я поначалу решил, что проще сделать "ворота" через которые над обязательно пройти. Прилепил к правому краю кнопки панельку. Если заходя на кнопку проходишь через панель - все хорошо.

Оказалось, что ни одно событие движения мыши не срабатывает над панелью, если ее ширина мала.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
bool enter = false;
        private void button1_MouseEnter(object sender, EventArgs e)
        {
            if (enter)
            {
                enter = false;
                this.Text = "Добро пожаловать!";
            }
            else
            {
               
                this.Text = "Вход запрещен!";
            }
        }

        private void panel1_MouseEnter(object sender, EventArgs e)
        {
            enter = true;
        }

        private void panel1_MouseLeave(object sender, EventArgs e)
        {
            enter = true;
        }

        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            enter = true;
        }
...
Рейтинг: 0 / 0
не получается поимать коардинаты мышки
    #39374901
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Оказалось, что ни одно событие движения мыши не срабатывает над панелью, если ее ширина мала.и я о том - про перепрыгивание.
Когда курсор двигаешь быстро - его координаты меняются скачками, а не плавно, поэтому курсор и перепрыгивает через твои ворота.
Поэтому принципиально знать предыдущую точку, до входа курсора в кнопку



IgorShal,

Как мне оформить свое сообщение?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / не получается поимать коардинаты мышки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]