5 / 5 / 6
Регистрация: 11.04.2015
Сообщений: 69
|
|
1 | |
Потеря пикселей при повороте изображение на произвольный угол14.11.2016, 20:19. Показов 1539. Ответов 4
Метки нет (Все метки)
здравствуйте. знаю, что данная тема не раз обсуждалась. однако приведённые примеры алгоритмов мне не помогли. в качестве доказательства прикрепляюсь проект (взят отсюда Поворот изображения и дополнен), в котором задействованы различные приёмы поворота изображения на произвольный угол при помощи таких библиотек как Graphics32, GDI+, SetWorldTransform, PlgBlt.
суть задачи - создать конструктор 2D химических формул любой сложности (примерно как здесь - http://www.xumuk.ru/rhf/). имеется графический приметив n-угольник, обозначающий 2D химическую структурную формулу. требуется повернут приметив на произвольный угол. задача выполняется успешно, если Angle mod 90=0 (90,180,270 etc.). в иных случаях линии, представляющие приметив, искажаются. есть в JEDI компонент JvImageRotate, но он также искажает изображение... вторая проблема - зазубренные линии. Буду признателен за помощь.
0
|
14.11.2016, 20:19 | |
Ответы с готовыми решениями:
4
TImageList и разбитый Bitmap или история о повороте BMP на произвольный угол Как убрать наслоение при повороте фото на произвольный градус в bitmap? Обрезаются иглы при повороте изображения на определённый угол Вывести произвольный треугольник, и осуществить его поворот на произвольный угол и маштабирование |
Native x86
5514 / 3273 / 934
Регистрация: 13.02.2013
Сообщений: 10,425
|
|
14.11.2016, 20:31 | 2 |
Поворот на угол, не кратный 90 градусам всегда сопровождается искажениями информации. Нельзя сделать горизонтальную или вертикальную линию наклонной совершенно безболезненно. Лучшее, что можно сделать -- это использовать субпиксельное сглаживание, тогда будет немного замылено, но без ступенек.
Простейший путь -- увеличить исходное изображение в целое количество раз методом дублирования пикселей, без всякого сглаживания. В этом случае каждый исходный пиксель превратится в 4 или 9 (или 16 и т.д., смотря сколько ресурсов у вас есть) пикселей того же цвета. Увеличенное изображение крутим на произвольный угол, а затем уменьшаем назад, усредняя цвет 4 (9, 16 и т.д.) пикселей назад в один. Последнее можно самому не велосипедить, а взять готовый метод того же GDI+ или другую реализацию уменьшения картинки со сглаживанием.
1
|
5 / 5 / 6
Регистрация: 11.04.2015
Сообщений: 69
|
|
14.11.2016, 20:40 [ТС] | 3 |
А нет ли визуального компонента на основе GDI+ со всеми встроенными фильтрами?
0
|
15.11.2016, 08:32 | 5 |
есть библиотеки работы с изображениями типа vampyre
http://galfar.vevb.net/imaging/doc/imaging.html но общий метод сглаживания именно тот, который указали в #2 копирование большего в меньшее
0
|
15.11.2016, 08:32 | |
15.11.2016, 08:32 | |
Помогаю со студенческими работами здесь
5
Определить изменение потенциальной энергии Ер диполя при повороте его на угол Определите, какое количество теплоты Q выделится в кольце при его повороте в поле на угол ф=90 Как будет направлена напряженность поля внутри щелевого излучателя, при ее повороте на некоторый угол Как сделать, чтобы при повороте вокруг одной из осей учитывался бы угол предыдущего поворота? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |