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

Эта программа использует следующий способ RotateBitmap для поворота изображения.

Когда вы поворачиваете прямоугольник, результат может быть более широким и более высоким, чем исходное изображение, поскольку поворотные углы могут торчать по бокам. Этот метод возвращает новое изображение, которое достаточно велико, чтобы отображать все содержимое исходного изображения.

Чтобы получить размеры повернутого изображения, код начинается с создания Matrix, который вращается по указанному углу. Он создает массив структур PointF, поддерживающих углы растрового изображения, и использует Matrix для поворота углов.

Затем метод вызывает метод GetPointBounds, чтобы получить границы для повернутых углов. Этот метод просто перебирает точки и сохраняет следы, а также минимальные и максимальные значения X и Y. Этот метод прост, поэтому он не показан здесь.

Далее код создает растровое изображение результата, достаточно большое, чтобы удерживать повернутое изображение. Затем он создает матрицу Matrix для представления вращения через нужный угол вокруг центра растрового изображения результата.

Затем метод создает объект Graphics, связанный с растровым изображением результата, и устанавливает свойство объекта InterpolationMode объекта для получения плавного результата. Код очищает растровое изображение результата с любым цветом в верхнем левом углу исходного изображения. (Прокомментированный код отладки заполняет растровое изображение результата светло-голубым цветом, поэтому легко увидеть, где рисуется исходное изображение.)

Далее код устанавливает свойство Graphics объекта Graphics, чтобы он вращал все, что он рисует. Наконец, метод рисует исходное растровое изображение в позиции, которая делает его центрированным по растровому изображению результата. Преобразование автоматически поворачивает изображение.

Источник: http://csharphelper.com/blog/2016/03/rotate-images-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *