Ziya1995 Ответов: 2

Как получить мышь.Положение на экране в WPF?


Он работает в рамках конкретного элемента управления, но не работает в рамках конкретного элемента управления.

2 нужны очки:
1. события мыши, когда мышь находится не внутри элемента управления, а на экране.
2. положение мыши, когда мышь находится не внутри элемента управления, а на экране.

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

Следующие не работают:

1.
Система.Окна.Ввод.Мышь.GetPosition (это)

Не получает положение мыши из определенного элемента управления.

2.
Система.Окна.Формы.Указатель.Положение.Х

Система.Окна.Формы.Указатель.Позиция не работает, потому что у нее нет типов в приложении WPF, но она работает в приложении Windows Forms.
Intellisense получает систему.Окна.Формы.Указатель.Позиция,
но он не получает никакой позиции,
следовательно, я не могу получить:
Положение.Х
Положение.Г

3.
Point pointToWindow = мышь.GetPosition (это);
Point pointToScreen = PointToScreen(pointToWindow);

Не получает положение мыши из определенного элемента управления.

Style-7

использовать курсоры.Позиция

2 Ответов

Рейтинг:
8

Ziya1995

Следующий код получает положение мыши относительно экрана независимо от того, где находится мышь:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        Label label = new Label();
        label.Width = 100;
        label.Height = 30;

        this.Content = label;

        this.Loaded += delegate
        {
            System.Timers.Timer timer = new System.Timers.Timer();
            timer.Elapsed += delegate
            {
                this.Dispatcher.Invoke(new Action(delegate
                    {
                        Mouse.Capture(this);
                        Point pointToWindow = Mouse.GetPosition(this);
                        Point pointToScreen = PointToScreen(pointToWindow);
                        label.Content = pointToScreen.ToString();
                        Mouse.Capture(null);
                    }));
            };
            timer.Interval = 1;
            timer.Start();
        };
    }
}


Рейтинг:
20

Valery Possoz

Привет,

Вам нужно использовать визуальные средства.PointToScreen

https://msdn.microsoft.com/en-us/library/system.windows.media.visual.pointtoscreen.aspx[^]

Point pointToWindow = Mouse.GetPosition(this);
Point pointToScreen = PointToScreen(pointToWindow);


Валери.


Sergey Alexandrovich Kryukov

Конечно, 5.
—СА