none
PictureBox: Girar Imagen a posicion en grados RRS feed

  • Pregunta

  • muy buenas

    Estoy intentando que una imagen rote a una posicion en grados segun se especifica en un textbox, hasta ahora lo unico que e conseguido es que rote pero cada vez que le pulso el boton me rota los grados segun la posicion en la que esta, necesito que si pongo 20º se coloque en esa posicio y si seguido le pongo 10º se coloque en 10º y no en 30º

    muchas gracias estoy volviendome loco

    lunes, 26 de noviembre de 2018 20:55

Respuestas

  • y para implementarlo en un boton y coja los grados de un textbox??

    muchas gracias

    //Se guarda nuestra vieja imagen asi que se puede eliminar
    Image oldImage = pictureBox.Image;
    //se pasa la imagen original y retorna un nueva imagen rotada a 10 grados
    pictureBox.Image = Utilities.RotateImage(image, 10);
    if (oldImage != null)
    {
        oldImage.Dispose();
    } 

    Si puedes usar un textbox que capture rotationAngle y este ultimo codigo en el boton en la acción del click

    o si quieres usar un control slider... también


    • Editado greg_dorian lunes, 26 de noviembre de 2018 22:04
    • Propuesto como respuesta Pablo Rubio lunes, 26 de noviembre de 2018 22:10
    • Marcado como respuesta Pablo Rubio lunes, 10 de diciembre de 2018 16:18
    lunes, 26 de noviembre de 2018 22:04

Todas las respuestas

  • hola juega con el rotate, Creo que seria asi:

    myPictureBox.Image.RotateFlip(RotateFlipType.Rotate90FlipNone/3);// 30 grados

    lunes, 26 de noviembre de 2018 20:57
  • ya e intentado, pero me suma los grados y lo que necesito es que la imagen rote a una posicion en grados y no que valla rotando seguido
    lunes, 26 de noviembre de 2018 21:08
  • usa esta clase:

    public static Image RotateImage(Image img, float rotationAngle)
    {
        //create an empty Bitmap image
        Bitmap bmp = new Bitmap(img.Width, img.Height);
    
        //turn the Bitmap into a Graphics object
        Graphics gfx = Graphics.FromImage(bmp);
    
        //now we set the rotation point to the center of our image
        gfx.TranslateTransform((float)bmp.Width / 2, (float)bmp.Height / 2);
    
        //now rotate the image
        gfx.RotateTransform(rotationAngle);
    
        gfx.TranslateTransform(-(float)bmp.Width / 2, -(float)bmp.Height / 2);
    
        //set the InterpolationMode to HighQualityBicubic so to ensure a high
        //quality image once it is transformed to the specified size
        gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
    
        //now draw our new image onto the graphics object
        gfx.DrawImage(img, new Point(0, 0));
    
        //dispose of our Graphics object
        gfx.Dispose();
    
        //return the image
        return bmp;
    }

    fuente: https://stackoverflow.com/questions/2163829/how-do-i-rotate-a-picture-in-winforms

    lunes, 26 de noviembre de 2018 21:43
  • y para implementarlo en un boton y coja los grados de un textbox??

    muchas gracias

    lunes, 26 de noviembre de 2018 21:59
  • y para implementarlo en un boton y coja los grados de un textbox??

    muchas gracias

    //Se guarda nuestra vieja imagen asi que se puede eliminar
    Image oldImage = pictureBox.Image;
    //se pasa la imagen original y retorna un nueva imagen rotada a 10 grados
    pictureBox.Image = Utilities.RotateImage(image, 10);
    if (oldImage != null)
    {
        oldImage.Dispose();
    } 

    Si puedes usar un textbox que capture rotationAngle y este ultimo codigo en el boton en la acción del click

    o si quieres usar un control slider... también


    • Editado greg_dorian lunes, 26 de noviembre de 2018 22:04
    • Propuesto como respuesta Pablo Rubio lunes, 26 de noviembre de 2018 22:10
    • Marcado como respuesta Pablo Rubio lunes, 10 de diciembre de 2018 16:18
    lunes, 26 de noviembre de 2018 22:04
  • VB.NET por favor

    muchas gracias

    lunes, 26 de noviembre de 2018 22:15
  • RotateFlipType es un enum, no respondan cualquier cosa
    sábado, 27 de febrero de 2021 20:18