AnswerBun.com

¿Como mover el cursor dentro de las coordenadas de un panel?

Stack Overflow en español Asked by Javier Aceves on January 4, 2022

Tengo un problema con un código para hacer que mi mouse se mueva dentro de un panel de 640×480, lo que pasa es esto tengo un código sobre como mover el cursor con coordenadas que extrae de dos archivos de texto.

Al presionar el boton este mueve el mouse pero lo que pasa es que lo mueve por encima del panel en donde tengo contemplado el movimiento, eh leído que hay una forma de usar algo llamado PointToClient y el PointToScreen pero no obtuve resultados.

Dejo coordenadas para probar:

  • Coord X:
357                                 
336
338
343
357
263
257
246
276
  • Coord Y:
124
133
131
127
107
76
-88
-90
-105
  • Código:
public void cursor_track_Click(object sender, EventArgs e)
        {
           List<string> linesX = File.ReadLines(@"C:EyeMatrisCoordenadasCoordenadasX.txt").ToList();
           List<string> linesY = File.ReadLines(@"C:EyeMatrisCoordenadasCoordenadasY.txt").ToList();
            List<Point> points = new List<Point>();
            for(int i = 0; i< linesX.Count; i++)
            {
                Point p = new Point(int.Parse(linesX[i]), int.Parse(linesY[i]));
                points.Add(p);
            }
            foreach (var point in points) {
                //resolution es mi panel de 640x480
                resolution.PointToScreen(Cursor.Position = new Point(point.X, point.Y)); 
            }
        }

One Answer

Muestro el código y así podrás comparar lo que haces mal en el tuyo:

public void cursor_track_Click(object sender, EventArgs e)
{
    List<string> linesX = File.ReadLines(@"C:EyeMatrisCoordenadasCoordenadasX.txt").ToList();
    List<string> linesY = File.ReadLines(@"C:EyeMatrisCoordenadasCoordenadasY.txt").ToList();

    for(int i = 0; i < linesX.Count; i++)
    {
        Point point = new Point(int.Parse(linesX[i]), int.Parse(linesY[i]));
    
        // Generamos el punto al que queremos se mueva el cursor,
        // teniendo en cuenta las coordenadas del panel.
        Point miPunto = new Point(point.X + resolution.Left, 
                                  point.Y + resolution.Top);
        // resolution es mi panel de 640x480
        // ** resolution.PointToScreen(Cursor.Position = new Point(point.X, point.Y));
        Cursor.Position = this.PointToScreen(miPunto); 
    }
}

Observa que te puedes ahorrar la lista de puntos y hacerlo todo en un único bucle. Y mira que tú ya establecías la posición del cursor, pero sin conversión, luego lo que hacías era convertirlo pero sin establecerlo.

Lo correcto es transformar la coordenada de miPunto y luego asignar el valor obtenido a la posición del cursor.

Answered by Antonio S.F. on January 4, 2022

Add your own answers!

Related Questions

guardar gráficas en un for, R

1  Asked on November 20, 2021 by astronauta_estadstico

   

como elegir una variable dinamicamente en JS?

2  Asked on November 20, 2021 by pwnaz

   

Problema Para enviar Email desde SQL SERVER

1  Asked on November 18, 2021 by soldier

     

Problema con upload de archivos en PHP

1  Asked on November 18, 2021

   

Error en react navigation

1  Asked on November 18, 2021

 

No toma mi argumento de año de una forma de herencia simple

1  Asked on November 18, 2021 by carlos-posdas

   

¿Por qué un apuntador es capaz de imprimir un string?

1  Asked on November 18, 2021 by brandon-jesus-juarez-munguia

   

como se relaciona .resolve() y .reject() con .then() y .catch()

1  Asked on November 18, 2021 by emmanuel-maximino-lopez-licea

     

Cargar campos select con ajax

0  Asked on November 17, 2021 by rodrigo-jaque

     

MercadoPago Connect: Problemas Obtención credenciales usuario. SSL

1  Asked on November 17, 2021 by federico-rossi

     

Modificar un archivo csv en python

1  Asked on November 17, 2021 by user94589

   

Ask a Question

Get help from others!

© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir