Путь разработчика    

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


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

Python

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

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

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

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

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

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

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



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Является ли Monkey patching хорошей практикой программирования?

MonkeyPatch - это часть кода программирования, которая расширяет или изменяет другой код во время выполнения. Это означает, что он вносит изменения в модул...

09 12 2019 10:41:42

NumericUpDown и использование десятичных значений в C#

Большинство разработчиков знают, что элемент NumericUpDown позволяет пользователю выбирать число, но мало кто знает, что он может обрабатывать десятичные з...

08 12 2019 11:25:29

Как вы отлаживаете программу на Python?

Python имеет отладчик, который доступен как модуль под названием pdb. Он поддерживает установку условных точек останова, одновременное переключение по исхо...

07 12 2019 7:24:26

Как работать с Raycast в 2D пространстве в Unity 5

В данном уроке мы разберем как работать с Raycast в 2D пространстве в Unity 5. Для этого мы будем использовать библиотеку Physics2d...

06 12 2019 3:39:58

Среда разработки Intellij idea

IntelliJ IDEA — интегрированная среда разработки программного обеспечения на многих языках программирования от компании JetBrains. В 2001 году была выпущен...

05 12 2019 18:40:50

Основа для карточной игры в C#

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

04 12 2019 19:42:57

Использование лямбда-выражений в C#

Пример Использование лямбда-выражений в C# показало, как использовать лямбда выражения для сжатого создания анонимного метода, который принимает параметры...

03 12 2019 18:59:37

Как открыть файл PDF в C#

Во время разработки я добавил в форму элемент WebBrowser. Когда программа запускается, он использует следующий код для открытия PDF-файла в элементе управл...

02 12 2019 8:23:21

C++ для чайников (Стефан Рэнди Дэвис)

Научитесь программировать! Полное руководство по C++, с учетом стандартов C++ и C++ 14. Вы всегда хотели научиться программировать, но не знали, какой язык...

01 12 2019 8:16:24

Установите вкладку RichTextBox в C#

Вы можете установить разные вкладки вкладки RichTextBox для разных частей текста элемента управления RichTextBox. В этом примере используется следующий код...

30 11 2019 10:30:21

Turbo Pascal: Учебник (С. А. Немнюгин)

Цель данного учебного курса - обучить программированию на Паскале, точнее, на том его расширении, которое было создано фирмой Borland и называется Турбо Па...

29 11 2019 7:38:23

Метод Contains() в Java

Java String contains()- метод чтобы проверить, содержит ли String указанную последовательность символов. Этот метод возвращает логический тип данных, котор...

28 11 2019 21:32:44

Нарисуйте масштабированное нормальное распределение в C#

Пример Нарисовать нормальную кривую распределения в C# показывает, как для нормального распределения. К сожалению, для некоторых средств и стандартных откл...

27 11 2019 15:33:11

Как найти свой IP-адрес и имя компьютера в Java

Класс InetAddress можно использовать для поиска доменных имен (DNS). Имя хоста может быть либо именем машины, например «mail.yahoo.com», либо текстовым пре...

26 11 2019 22:56:16

Отображение подсказок для узлов TreeView в C#

Во время разработки я добавил элемент формы TreeView в форму. Я также добавил связанный элемент управления ImageList для хранения изображений для узлов упр...

25 11 2019 5:42:10

Вектор в Java

Java-векторы обычно используются вместо массивов, поскольку они автоматически расширяются при добавлении новых данных. Это означает, что экземпляры Vector,...

24 11 2019 17:26:47

Язык программирования С++ (Б. Страуструп)

Книга Б. Страуструпа " Язык программирования С++" дает описание языка, его ключевых понятий и основных приемов программирования на нем. Это завершенное руко...

23 11 2019 20:32:13

Использовать глобальные привязки команд в WPF и C#

Пример Использование пользовательских привязок команд в WPF и C# объясняет, как вы можете использовать программу для пользовательских команд. ( Это запутанн...

22 11 2019 20:29:16

Самоучитель С#. Начала программирования (Элеонора Ишкова)

Данная книга является превосходным и эффективным учебным пособием для изучения языка программирования С# с нуля. Правила и приемы С# иллюстрируются програм...

21 11 2019 17:45:38

Перечислить узлы TreeView в C#

Предыдущие два сообщения показывают два способа перечисления узлов TreeView, которые проверяются. Идея состоит в том, чтобы рекурсивно сканировать узлы дер...

20 11 2019 1:17:14

Почему множественное наследование не поддерживается в Java

Это просто устранить двусмысленность, поскольку множественное наследование может вызвать двусмысленность вокруг проблемы Diamond в нескольких сценариях. На...

19 11 2019 17:39:21

1С: Бухгалтерия 8.3 для бухгалтера (Николай Селищев)

1 С: Бухгалтерия 8.3 для бухгалтера является иллюстрированным практическим руководством по работе с новейшим и самым современным программным продуктом по ве...

18 11 2019 11:49:13

Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14 (Скотт Мейерс)

В этой книге отражен бесценный опыт ее автора как программиста на C++. Новые возможности этого языка программирования, появившиеся в стандартах C++11 и C++...

17 11 2019 19:54:21


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69