Я пытаюсь получить абсолютное положение элемента управления на экране. Я использую два монитора, и результаты на самом деле не так велики ...C# абсолютное положение управления на экране
Что я делаю, это открытие другой формы для захвата изображения, затем передача этого изображения в основную форму и закрытие формы захвата. Затем я хочу, чтобы основная форма появлялась в том же месте, где была захвачена фотография. Чтобы получить суть того, что я пытаюсь сделать в качестве примера, откройте инструмент Snipping Tool на Windows и запишите снипп. Затем окно появится в том месте, где было выполнено изображение.
Это текущий код, я использую, чтобы сделать это:
Location = new Point(Cursor.Position.X - CaptureBox.Width - CapturePanel.Location.X - CaptureBox.Location.X - 8, Cursor.Position.Y - CaptureBox.Height - CapturePanel.Location.Y - CaptureBox.Location.Y - 30);
CapturePanel содержит элемент управления, который хранит CaptureBox картину. Я также беру 8 из местоположения X и 30 из местоположения te Y, чтобы компенсировать границу формы и строку заголовка, но единственная проблема заключается в том, что некоторые компьютеры будут использовать другой стиль окна, и эти числа будут меняться.
Если есть способ, который можно использовать для захвата границы и ширины заголовка/высоты окон, это было бы здорово.
EDIT
Решение этой проблемы было бы:
Location = new Point(
Cursor.Position.X -
CaptureBox.Width -
CapturePanel.Location.X -
CaptureBox.Location.X -
SystemInformation.HorizontalResizeBorderThickness,
Cursor.Position.Y -
CaptureBox.Height -
CapturePanel.Location.Y -
CaptureBox.Location.Y -
SystemInformation.CaptionHeight -
SystemInformation.VerticalResizeBorderThickness
);
С помощью King King указывая мне о системе.
Первый метод работает, SystemInformation.CaptionHeight был меньше, чем должно быть. Как насчет размера границы окна? – Dragonphase
@ Dragonphase, если вы хотите получить местоположение 'CaptureBox', см. Мой обновленный ответ, нет необходимости вычислять' Размер границы'. –
Это не сработает, так как я не передаю местоположение захваченного изображения в основную форму. Если я это сделаю, это приведет к тому, что абсолютное положение (например, 1440) будет добавлено к местоположению текущей выбранной формы на основном мониторе. Однако я придумал решение, это на моем главном посту. – Dragonphase