@Sidik_D
Системный администратор, веб-разработчик

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

Когда у пользователя несколько мониторов., не получается корректно разместить курсор мыши на скриншоте.
Курсор рисуется относительно главного экрана, но если у пользователя главный экран по средине, или где-то в крайнем правом углу, то курсор размещается некорректно.
Подскажите пожалуйста, как правильно определить главный экран и корректно разместить курсор на скриншоте?

Вот кусок кода
namespace Screenshot
{
    public partial class Form1 : Form
    {       
        public Form1()
        {
            InitializeComponent();
            CaptureDesktop();            
        }

        private static void CaptureDesktop()
        {
            Rectangle desktopRect = GetDesktopBounds();
            using (Bitmap bitmap = new Bitmap(desktopRect.Width, desktopRect.Height))
            {
                using (Graphics graphics = Graphics.FromImage(bitmap))
                {
                    graphics.CopyFromScreen(desktopRect.Location, Point.Empty, bitmap.Size);
                    graphics.DrawImage(Image.FromFile("cursor.png"), Cursor.Position.X, Cursor.Position.Y);                   
                    bitmap.Save("C:\\screenshots\\Test.jpeg");                    
                }
            }
        }

        private static Rectangle GetDesktopBounds()
        {
            Rectangle result = new Rectangle();
            foreach (Screen screen in Screen.AllScreens)
            {
                result = Rectangle.Union(result, screen.Bounds);
            }
            return result;
        }
  • Вопрос задан
  • 670 просмотров
Решения вопроса 1
WNeZRoS
@WNeZRoS
У главного экрана координаты левого верхнего угла - (0, 0).
Когда главный экран не самый верхний и левый, то появляются отрицательные координаты.
Чтобы перевести экранные координаты в координаты картинки нужно отнять desktopRect.Left и desktopRect.Top
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы