Поворот изображения C#

Обработка отказа: Когда одна машина перестала работать, другая машина (обычно в том же месте) вступает во владение и возобновляет сервис

Аварийное восстановление: Когда Годзилла уничтожает Ваш дата-центр, у Вас действительно есть альтернативные местоположения, чтобы продолжать предоставлять Вашу услугу и протоколы/средства для другого местоположения, чтобы знать, как продолжать предоставлять услугу

В зависимости от конкретных потребностей каждого сервиса, аварийное восстановление могло бы просто быть лентой для резервного копирования в сейфе в другом месте. Другими словами, это просто имеет определенный протокол для восстановления с бедствия. Аналогично, обработка отказа могла бы просто иметь запасную резервную машину, которая заставляет Вас перейти к дата-центру для нее для принятия места неудавшегося, то есть, имея определенный протокол о том, что сделать в случае аппаратного сбоя.

Подведение итогов, обработка отказа отвечает на вопрос, 'что я делаю в случае, если единственная машина перестала работать?', отвечает аварийное восстановление, 'что я делаю в случае, если бедствие происходит (огонь, лавинные рассылки, война, ISP обанкротился, безотносительно)?'

Архитектура Развертывания соединения высокой доступности

8
задан Broadminded 2 September 2009 в 20:32
поделиться

2 ответа

Image myImage = Image.FromFile("myimage.png");
myImage.RotateFlip(RotateFlipType.Rotate180FlipNone);

http://msdn.microsoft.com/en-us/library/system.drawing.image.rotateflip.aspx

22
ответ дан 3 November 2019 в 14:03
поделиться

Вот пример кода (написанный не мной - найденный некоторое время назад здесь ), который работал у меня, если вы отредактируете некоторые детали.

private Bitmap rotateImage(Bitmap b, float angle)
{
    //create a new empty bitmap to hold rotated image
    Bitmap returnBitmap = new Bitmap(b.Width, b.Height);

    //make a graphics object from the empty bitmap
    using (Graphics g = Graphics.FromImage(returnBitmap))
    {
        //move rotation point to center of image
        g.TranslateTransform((float)b.Width / 2, (float)b.Height / 2);
        //rotate
        g.RotateTransform(angle);
        //move image back
        g.TranslateTransform(-(float)b.Width / 2, -(float)b.Height / 2);
        //draw passed in image onto graphics object
        g.DrawImage(b, new Point(0, 0));
    }

    return returnBitmap;
} 

Пожалуйста Обратите внимание, что это может не работать "из коробки" - есть некоторые проблемы с новым растровым изображением. Когда вы его поворачиваете, он может не поместиться в прямоугольнике старого растрового изображения (границы прямоугольника b.Width, B.Height).

В любом случае, это просто чтобы дать вам представление. Если вы выберете этот способ, я уверен, что вы сможете проработать все детали. Я бы отправил свой последний код, но сейчас его нет при мне ...

7
ответ дан 3 November 2019 в 14:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: