Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 7

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

04.01.2014, 05:33. Показов 4925. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, ситуация следующая:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Field extends Canvas implements ActionListener {
 
    Car car = new Car();
    Timer timer = new Timer(20, this);
 
    public Field() {        
        timer.start();
        addKeyListener(new KeyListener());
        setFocusable(true); 
    }
        
    @Override
    public void paint(Graphics grphcs) {        
        super.paint(grphcs);         
        Graphics2D g2d = (Graphics2D) grphcs;
        AffineTransform affine = new AffineTransform();
        int angle = car.getAngle();
        Image image = car.getCarImage();       
        int x = (int) car.getX();
        int y = (int) car.getY();
        
        affine.rotate(Math.toRadians(angle), x + image.getWidth(null) / 2, 
               y + image.getHeight(null) / 2);
        g2d.setTransform(affine); 
        g2d.drawImage(image, x, y, null);     
    }
    .... //listener для управления машиной
}
Угол задается пользователем, то есть, он управляет машиной.
Проблема в том, что при повороте искажается изображение (на рисунке ниже). Подскажите как бороться? Еще при движении модель перемещается рывками, двойная буферизация не помогает (наоборот все начинает мигать), либо я ее не так сделал:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
        ....
        int x = (int) car.getX();
        int y = (int) car.getY();
        
        dbImage = createImage(500, 500);
        dbGraphics = (Graphics2D) dbImage.getGraphics();
        
        affine.rotate(Math.toRadians(angle), x + image.getWidth(null) / 2, 
               y + image.getHeight(null) / 2);
        dbGraphics.setTransform(affine); 
        dbGraphics.drawImage(image, x, y, null);   
        
        grphcs.drawImage(dbImage, 0, 0, this);
Взываю к вам!) Подскажите как быть.
Миниатюры
Поворот изображения  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.01.2014, 05:33
Ответы с готовыми решениями:

Поворот изображения Java
Думаю что это глупый вопрос, но как повернуть изображение в Java на некоторое количество градусов(желательно относительно центра). ...

Поворот фигуры
Необходимо реализовать афинное преобразование поворота относительно центра фигуры, аналог glRotate opengl public void Rotate(double...

Поворот слоев в матрице
Доброе Утро! Помогите Пожалуйста написать программу: Назовем 1-слоем (целочисленного) двумерного массива размером n*m элементы, ...

3
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 6
05.01.2014, 08:17
К сожалению, толком помочь не могу (сам пишу лапшекод и с графикой ещё не разбирался), но могу сказать следующее: судя по скриншоту, программа работает правильно. Если ты возьмёшь продвинутый графический редактор (например, PhotoFiltre) и повернёшь в нём изображение на произвольный небольшой угол, сняв в диалоге галочку "сглаживание", то получишь примерно то же самое, что и на скриншоте справа. Так что, скорее всего, чтобы избавиться от лесенки, тебе нужно не просто поворачивать, а ещё и дополнительно сглаживать картинку.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
05.01.2014, 16:45
Попробуйте после
Цитата Сообщение от Fllo Посмотреть сообщение
Graphics2D g2d = (Graphics2D) grphcs;
добавить
Java
1
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
06.01.2014, 20:05
не вижу буферизации это 1, зачем на каждый паинт создавать новый AffineTransform это 2
и да RenderingHints поможет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2014, 20:05
Помогаю со студенческими работами здесь

Поворот массива на 90 градус
Создать программу, которая заполняет массив А случайными целыми числами из диапазона причиненному пользователем и выводит весь массив. ...

Поворот треугольника вокруг центра тяжести
Доброго времени суток! Выполняю задания с этого сайта...

Поворот матрицы на 90 градусов по часовой стрелке
Подскажите как повернуть двумерный массив по часовой стрелке, можно использовать другой массив либо циклы. Я сделал набросок, метод мэйн не...

Поворот изображения...
Ребят, очень нужна помощь!!! Только начал изучать MFC, помогить с алгоритмом, пожалуйста: нарисовать несколько фигур, на диалоговой панели...

Поворот изображения
как можно и можно ли вобще организовать поворот картинки? вот картинка. тока картинки цветной а не draw


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru