none
Problemas con la propiedad TranslateTransform RRS feed

  • Pregunta

  • Tengo un inconveniente con esta propiedad. Tengo entendido que la propiedad antes mencionada designa un punto en el plano cartesiano(x,y) para ubicar un objeto...en este caso quisiera ubicar una imagen que esta dentro de un Canvas,pero no funciona...

    Este es el codigo:

    aleatorio = new Random();
    Mover = new TranslateTransform(1366,aleatorio.Next (1,430));
    this.Pato.RenderTransform = Mover;

    Bueno, en este caso quiero que en el eje de la "X" aparezca en el extremo izquierdo de mi pantalla, y por  eso le puse 1366; que es el ancho de mi pantalla;y en el eje de la "Y" quiero que aparezca de una posición aleatoria,por eso puse un "random", pero dentro de un rango(1-430)....

    Agradezco su ayuda de antemano...

    lunes, 10 de noviembre de 2014 14:37

Respuestas

  • Si está dentro de un Canvas, simplemente asígnale el Canvas.Left y Canvas.Top:

    Pato.SetValue(Canvas.LeftProperty, 1366d);

    Ojo con el "1366". Si esa es la anchura de la pantalla y se lo asignas al "Left" del objeto, el objeto quedará justo "fuera" de la pantalla por el borde derecho. Si quieres que quede pegado al borde, tendrás que restar la anchura del objeto del 1366.

    martes, 11 de noviembre de 2014 5:59

Todas las respuestas

  • No, el TranslateTransform no designa un punto en el Canvas. Designa la DIFERENCIA respecto a la ubicación anterior del objeto. Esto significa que si le pones 1366 en la X, lo que hace es desplazar el objeto 1366 píxels hacia la derecha respecto a la ubicación en la que se encontraba originalmente.
    lunes, 10 de noviembre de 2014 16:49
  • muchas gracias.....Pero quisiera saber cual es la propiedad que necesito para designarle un punto especifico a un objeto??

    leonardito17

    lunes, 10 de noviembre de 2014 17:32
  • Si está dentro de un Canvas, simplemente asígnale el Canvas.Left y Canvas.Top:

    Pato.SetValue(Canvas.LeftProperty, 1366d);

    Ojo con el "1366". Si esa es la anchura de la pantalla y se lo asignas al "Left" del objeto, el objeto quedará justo "fuera" de la pantalla por el borde derecho. Si quieres que quede pegado al borde, tendrás que restar la anchura del objeto del 1366.

    martes, 11 de noviembre de 2014 5:59
  • Muchas Gracias!!!!...Me sirvio mucho

    leonardito17

    martes, 11 de noviembre de 2014 13:12
  • Hola nuevamente....He seguido sus consejos para darle un punto de inicio a mi animacion....cuando le doy esta propiedad al eje de la X(left) no tengo problemas, el problema esta en el eje de la Y(top),porque quiero asignarle un valor randómico, no me sale errores, pero al momento de correr el programa me sale que mi variable randómica no es de tipo Int...ayuda por favor!!!!!

    ahi le dejo el codigo

    aleatorio = new Random();
     Pato.SetValue(Canvas.LeftProperty,SystemParameters.PrimaryScreenWidth -Pato.Width );
    Pato.SetValue(Canvas.TopProperty, aleatorio.Next(1, 430).ToString());
    Agradezco su ayuda de antemano.


    leonardito17

    martes, 11 de noviembre de 2014 14:36
  • La propiedad Top del Canvas es de tipo Double. No puedes pasarle un String.

    Pato.SetValue(Canvas.TopProperty, (double)aleatorio.Next(1, 430));

    martes, 11 de noviembre de 2014 17:29