none
¿Como obtener las coordenas relativas de un formulario en coordenadas absolutas de la pantalla?

    Pregunta

  • 0,0 viene a ser la esquina superior izquierda de un formulario sin importar en qué posición de la pantalla se encuentre, cómo obtengo el valor equivalente de cualquier punto en el formulario en coordenadas de la pantalla?
    jueves, 29 de diciembre de 2016 6:17

Respuestas

  • Hola:
    Este es un Sub para centrar un Form
        Private Sub lP_Centrar()
            Dim tamaño As Rectangle = My.Computer.Screen.Bounds
            Dim posicionX As Integer = (tamaño.Width - Me.Width) \ 2
            Dim posicionY As Integer = (tamaño.Height - Me.Height) \ 2
            Me.Location = New Point(posicionX, posicionY)
        End Sub
       
    En mi PC en Ancho Pantalla es 1536 y el Alto Pantalla es 864
    Si creo un Form con Ancho=900 y Alto=600.

    El punto 0,0 del Form se corresponde con el punto 318,132 de la pantalla

    Un saludo desde Bilbo
    Carlos

    • Editado J. Carlos Herrero jueves, 29 de diciembre de 2016 7:59
    • Marcado como respuesta James-2016 jueves, 29 de diciembre de 2016 11:01
    jueves, 29 de diciembre de 2016 7:58
  • Hola

    Tienes el método PointToScreen que calcula la ubicación del punto especificado de cliente en coordenadas de pantalla.

    Dim point = Me.PointToScreen(new Point())

    Te devolverá la posición en pantalla(área del cliente) de la ventana la esquina izquierda superior. También puedes con el mismo método saber la posición de cualquier control, Control.PointToScreen


    Saludos

    • Editado Juan FA jueves, 29 de diciembre de 2016 9:40
    • Marcado como respuesta James-2016 jueves, 29 de diciembre de 2016 11:05
    jueves, 29 de diciembre de 2016 9:20
  • Ya lo resolví, simplemente se le suma a la posición en el formulario la diferencia de las coordenadas absolutas (0,0 de los formularios) y se obtiene siempre la misma posición en pantalla, sin importar la posición de los formularios.
    jueves, 29 de diciembre de 2016 12:16

Todas las respuestas

  • Hola:
    Este es un Sub para centrar un Form
        Private Sub lP_Centrar()
            Dim tamaño As Rectangle = My.Computer.Screen.Bounds
            Dim posicionX As Integer = (tamaño.Width - Me.Width) \ 2
            Dim posicionY As Integer = (tamaño.Height - Me.Height) \ 2
            Me.Location = New Point(posicionX, posicionY)
        End Sub
       
    En mi PC en Ancho Pantalla es 1536 y el Alto Pantalla es 864
    Si creo un Form con Ancho=900 y Alto=600.

    El punto 0,0 del Form se corresponde con el punto 318,132 de la pantalla

    Un saludo desde Bilbo
    Carlos

    • Editado J. Carlos Herrero jueves, 29 de diciembre de 2016 7:59
    • Marcado como respuesta James-2016 jueves, 29 de diciembre de 2016 11:01
    jueves, 29 de diciembre de 2016 7:58
  • Hola

    Tienes el método PointToScreen que calcula la ubicación del punto especificado de cliente en coordenadas de pantalla.

    Dim point = Me.PointToScreen(new Point())

    Te devolverá la posición en pantalla(área del cliente) de la ventana la esquina izquierda superior. También puedes con el mismo método saber la posición de cualquier control, Control.PointToScreen


    Saludos

    • Editado Juan FA jueves, 29 de diciembre de 2016 9:40
    • Marcado como respuesta James-2016 jueves, 29 de diciembre de 2016 11:05
    jueves, 29 de diciembre de 2016 9:20
  • Gracias. Es lo que consultaba.

    ¿Y cómo sería la operación inversa?

    Es decir si quiero ubicar un control en la posicion 5, 9 de la pantalla, por ejemplo. Tanto de un formulario1 como de un formulario2 que tienen distintos tamaños, qué valores tendrían que tener las propiedades Top y left del control en cada formulario para que siempre lo ubique en la posicion 5, 9 de la pantalla?

    En otras palabras las posiciones top y left serán diferentes para cada formulario pero siempre deberán ubicar el control en 5, 9 de la pantalla, cómo haría esa equivalencia?


    • Editado James-2016 jueves, 29 de diciembre de 2016 11:06
    jueves, 29 de diciembre de 2016 11:05
  • Ya lo resolví, simplemente se le suma a la posición en el formulario la diferencia de las coordenadas absolutas (0,0 de los formularios) y se obtiene siempre la misma posición en pantalla, sin importar la posición de los formularios.
    jueves, 29 de diciembre de 2016 12:16