Как повернуть изображение в C #? - PullRequest
0 голосов
/ 21 июня 2011

У меня есть изображение, которое я показываю на моем сайте.Который написан на C #.Я хочу дать своему пользователю возможность нажимать на кнопку, которая поворачивает изображение.Это приведет к повороту фактического изображения на сервере, поэтому при следующем отображении оно будет отображаться правильно.

Похоже на то, как у Facebook есть поворот изображения?

Ответы [ 3 ]

1 голос
/ 21 июня 2011
//Create Image element
Image rotated270 = new Image();
rotated270.Width = 150;

//Create source
BitmapImage bi = new BitmapImage();

//BitmapImage properties must be in a BeginInit/EndInit block
bi.BeginInit();
bi.UriSource = new Uri(@"pack://application:,,/sampleImages/watermelon.jpg");

//Set image rotation
bi.Rotation = Rotation.Rotate270;
bi.EndInit();

//set image source
rotated270.Source = bi;
1 голос
/ 21 июня 2011

Вам действительно нужно вращать изображение на сервере? Почему бы просто не сохранить свойство с изображением, в котором хранится значение поворота, например 90, 180, 270 ..., и применять его каждый раз при получении изображения, а также обновлять / сохранять значение свойства, когда пользователь поворачивает изображение

см. этот учебник о том, как повернуть изображение или Google его, вы найдете много образцов

0 голосов
/ 21 июня 2011
    public static Image RotateImage(Image image, Size size, float angle)
    {
        if (image == null)
        {
            throw new ArgumentNullException("image");
        }

        if (size.Width < 1 || size.Height < 1)
        {
            throw new ArgumentException("size must be larger than zero.");
        }

        Bitmap tempImage = new Bitmap(size.Width, size.Height);

        using (Graphics tempGraphics = Graphics.FromImage(tempImage))
        {
            PointF center = new PointF((float)size.Width / 2F, (float)size.Height / 2F);

            tempGraphics.TranslateTransform(center.X, center.Y, MatrixOrder.Prepend);

            tempGraphics.RotateTransform(angle != 180F ? angle : 182F/*at 180 exact angle the rotate make a small shift of image I don't know why!*/);

            tempGraphics.TranslateTransform(-center.X, -center.Y, MatrixOrder.Prepend);

            tempGraphics.DrawImage(image, new PointF());
        }

        return tempImage;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...