Autor
|
Tema: Obtener Coordenadas X e Y Dentro de un Panel o Canvas (C#) (Leído 14,044 veces)
|
poyson1
Desconectado
Mensajes: 3
|
Hola a todos, quisiera por favor que alguien me ayude con una respuesta que necesito, quiero obtener las coodenadas x e y de cualquier punto determinado al cual haga clic desde dentro de un panel o canvas contenido en un form, si me salgo del panel o canvas x e y seran cero (0).
Actualmente lo tengo hecho utilizando la Clase Point de System.Drawing y las coordenadas que he estado capturando son las de cualquier parte de la pantalla completa del monitor y las que quiero es desde dentro de un panel o canvas de un form.
No se como especificarle a una instancia de Point que su espacio total sera el size del panel o canvas.
Agradecera cualquier ayuda.
|
|
|
En línea
|
|
|
|
poyson1
Desconectado
Mensajes: 3
|
Bueno parece que el tema no solo se me hace a mi dificil... Aqui les pegare un codigo que he resuelto a ver si el mismo les da alguna idea y me pueden ayudar.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices;
namespace PosicionCursor { public partial class frmMain : Form { [DllImport("user32.dll")] // GetCursorPos()hace todo posible static extern bool GetCursorPos(ref Point lpPoint); // Variable que necesitaremos para contar los pixeles viajados static protected long totalPixels = 0; static protected int currX; static protected int currY; static protected int diffX; static protected int diffY;
public frmMain() { InitializeComponent(); }
private void tmrDef_Tick(object sender, EventArgs e) { //Nuevo punto el cual sera actualizado por la funcion con las coordenadas actuales Point defPnt = new Point(); //Llama la funcion y pasa el Punto, dfPnt GetCursorPos(ref defPnt); // Ahora despues de llamar la funcion, defPnt conteniendo las coordenadas las cuales podemos leer lblCoordX.Text = "X = " + defPnt.X.ToString(); lblCoordY.Text = "Y = " + defPnt.Y.ToString(); // Si el cursor se mueve para donde sea if (diffX != defPnt.X | diffY != defPnt.Y) { // Calcula la distancia del movimiento (horizontal y verticalmente) diffX = (defPnt.X - currX); diffY = (defPnt.Y - currY); // La diferencia sera negativa si el cursor fue movido a la izquierda o arriba // y si eso sucede, hara el numero positivo if (diffX < 0) { diffX *= -1; } if (diffY < 0) { diffY *= -1; } // Agregar a los pixeles viajados un contador totalPixels += diffX + diffY; // y mostrar en el label los pixeles viajadas //lblTravel.Text = "Viajaste " + totalPixels + " pixeles"; } // Necesitamos esto para ver la diferencia de pixeles entre dos movimientos de dos mouses currX = defPnt.X; currY = defPnt.Y; }
private void btnReset_Click(object sender, EventArgs e) { totalPixels = 0; } } }
Si pegan ese codigo el cual esta en un simple form con tres label, un timer y un button, si lo prueban se daran cuenta de que puedo capturar las coordenadas X e Y de cualquier parte de la pantalla donde se mueva el Mouse, y mi Incognita esta en tomar esas mismas coordenadas (X,Y) pero dentro de un Formulario o dentro de un panel o canvas o cualquier otro control, lo que quiero es especificarle a POINT que no sera la screen completa sino solo un control y si se sale de ahi sera 0,0.
|
|
« Última modificación: 21 Mayo 2010, 15:55 pm por poyson1 »
|
En línea
|
|
|
|
43H4FH44H45H4CH49H56H45H
Wiki
Desconectado
Mensajes: 502
|
Puedes añadir que en el evento MouseMove de un picturebox por ejemplo inicie el timer y en el resto del formulario (evento MouseMove) que detenga dicho timer y coloque a 0 las coordenadas, asi solo mostrará los cambios de posicion cuando este sobre el picturebox. Para el timer seria bueno colocar un intervalo de 100 aproximandamente.
Escribiste muchas lineas de code para algo tan simple...
|
|
|
En línea
|
-R IP :0100 -A 100 2826:0100 MOV AH,09 2826:0102 MOV DX,109 2826:0105 INT 21 2826:0105 MOV AH,08 2826:0105 INT 21 2826:0107 INT 20 2826:0109 DB 'MI NICK ES CODELIVE.$' 2826:0127 -R BX :0000 -R CX :20 -N CODELIVE.COM -W
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿Que es canvas?
« 1 2 »
Dudas Generales
|
Yasmesita
|
10
|
13,627
|
19 Septiembre 2011, 19:14 pm
por imoen
|
|
|
[VBS] ¿Como obtener las coordenadas del ratón?
Scripting
|
serginmatonis
|
0
|
2,346
|
8 Febrero 2012, 21:22 pm
por serginmatonis
|
|
|
ajustar canvas dentro de un div dependiendo de la resolucion de pantalla
Desarrollo Web
|
OssoH
|
2
|
5,742
|
10 Abril 2012, 16:59 pm
por OssoH
|
|
|
Como obtener posicion mouse dentro de scrollpane?
Java
|
juancaa
|
2
|
3,595
|
25 Junio 2012, 11:44 am
por juancaa
|
|
|
[C#] detectar imagen y obtener coordenadas
.NET (C#, VB.NET, ASP)
|
nevachana
|
8
|
12,659
|
7 Febrero 2015, 17:39 pm
por nevachana
|
|