Как повернуть картинку в WinForms - PullRequest
40 голосов
/ 29 января 2010

Я хочу, чтобы в моем приложении было одно изображение, которое я могу поворачивать, чтобы указывать направления, например направление ветра. Или даже время. Какой код я использую для поворота изображения? Спасибо

Обновление: я использую .NET 2.0, Windows 2000, VS C # 2005

Ответы [ 12 ]

0 голосов
/ 18 января 2017

Вы можете легко сделать это, вызвав этот метод:

public static Bitmap RotateImage(Image image, float angle)
{
    if (image == null)
        throw new ArgumentNullException("image");

    PointF offset = new PointF((float)image.Width / 2, (float)image.Height / 2);

    //create a new empty bitmap to hold rotated image
    Bitmap rotatedBmp = new Bitmap(image.Width, image.Height);
    rotatedBmp.SetResolution(image.HorizontalResolution, image.VerticalResolution);

    //make a graphics object from the empty bitmap
    Graphics g = Graphics.FromImage(rotatedBmp);

    //Put the rotation point in the center of the image
    g.TranslateTransform(offset.X, offset.Y);

    //rotate the image
    g.RotateTransform(angle);

    //move the image back
    g.TranslateTransform(-offset.X, -offset.Y);

    //draw passed in image onto graphics object
    g.DrawImage(image, new PointF(0, 0));

    return rotatedBmp;
}

не забудьте добавить ссылку на System.Drawing.dll в свой проект

Пример вызова этого метода:

Image image = new Bitmap("waves.png");
Image newImage = RotateImage(image, 360);
newImage.Save("newWaves.png");
0 голосов
/ 25 сентября 2016

Это будет работать до тех пор, пока изображение, которое вы хотите повернуть, уже находится в вашей папке ресурсов Properties.

В частичном классе:

Bitmap bmp2;

OnLoad:

 bmp2 = new Bitmap(Tycoon.Properties.Resources.save2);
            pictureBox6.SizeMode = PictureBoxSizeMode.StretchImage;
            pictureBox6.Image = bmp2;

Кнопка или Onclick

private void pictureBox6_Click(object sender, EventArgs e)
        {
            if (bmp2 != null)
            {
                bmp2.RotateFlip(RotateFlipType.Rotate90FlipNone);
                pictureBox6.Image = bmp2;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...