Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.05.2020
Сообщений: 47

Как последовательно выводить несколько изображений в java?

18.05.2020, 07:48. Показов 1185. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу сделать что-то похожее на 2D движок основанный на BufferedImage. Проблема в том, что при выводе отдельно одного и отдельно второго(на данный момент)всё выводится нормально, но если вывести их последовательно, то выйдет только тот, который написан ниже в коде.
Главный класс
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import javax.swing.*;
import java.io.IOException;
 
 
public class MainClass {
    private static Object Graphics;
    public static void main(String[] args) throws IOException {
        JFunctions drawers = new JFunctions();
        String[] array = new String[2];
        array[0] = "rotat.png";
        array[1] = "90";
        String[] back = new String[2];
        back[0] = "testback.png";
        back[1] = "0";
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(1816, 839);
        drawers.preparer(array, frame);
        drawers.drawer(back[0], frame, 0, 0);
        frame.setVisible(true);
    }
}
Класс с методами
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
public class JFunctions {
    public static BufferedImage rotate(BufferedImage image, int angle) {
        int w = image.getWidth(), h = image.getHeight();
        GraphicsConfiguration gc = getDefaultConfiguration();
        BufferedImage result = gc.createCompatibleImage(w, h);
        Graphics2D g = result.createGraphics();
        g.rotate(Math.toRadians(angle), w / 2, h / 2);
        g.drawRenderedImage(image, null);
        g.dispose();
        return result;
    }
    public static GraphicsConfiguration getDefaultConfiguration() {
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice gd = ge.getDefaultScreenDevice();
        return gd.getDefaultConfiguration();
    }
    public void preparer(String[] into, JFrame frame) throws IOException {
        String Fname = null;
        int ang = 0;
        BufferedImage FinalOut = null;
        if (into[0].equals("null")==false){
            Fname = into[0];
            File img = new File(Fname);
            String imgPath = img.getAbsolutePath();
            BufferedImage image = ImageIO.read(new File(imgPath));
            ang = Integer.valueOf(into[1]);
            FinalOut = rotate(image, ang);
        }
        drawer2(FinalOut, 1, 2, frame);
    }
 
 
    public void drawer(String file, JFrame frame, int x, int y) throws IOException {
        File img = new File(file);
        String imgPath = img.getAbsolutePath();
        BufferedImage image = ImageIO.read(new File(imgPath));
        JPanel pane = new JPanel() {
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.drawImage(image,x, y,null);
            }
        };
        frame.add(pane);
 
    }
    public void drawer2(BufferedImage bufferedImage, int GPositionX, int GPositionY, JFrame frame){
        JPanel pane = new JPanel() {
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.drawImage(bufferedImage,GPositionX*100-100, GPositionY*100-100,null);
            }
        };
        frame.add(pane);
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2020, 07:48
Ответы с готовыми решениями:

Java. Как последовательно запустить несколько exe
Как запустить несколько экзешников последовательно? То есть, когда я запускаю их с помощью runtime.getRuntime().exec(), второй запущенный...

Как последовательно применить несколько трансформаций
Если просто, есть прямоугольник его нужно сместить с начало на y+=100 x+=100 с помощью трансформации затем повернуть на 40 градусов...

Как запустить несколько приложений последовательно?
Здравствуйте. Как мне написать скрипт, который бы последовательно запускал три приложения?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2020, 07:48
Помогаю со студенческими работами здесь

Как выводить много одинаковых изображений одновременно?
Суть вот в чем: Есть *.fla и класс *.as. Сцена пустая. В классе я добавляю изображение корабля, который стреляет со своих бортов ядрами. По...

Функция должна выводить несколько значений, но выводить только одно. Почему?
Здравствуйте! Мне нужно создать рекурсивную функцию, которая выводит на экран все простые множители числа n (единицу не учитывать) в...

Как задать движение автомобиля последовательно на несколько остановок?
Здравствуйте всем! Есть автобус, который должен подобрать людей на некоторых остановках маршрута, состав которых всякий раз...

Как можно в базе Firebird запустить несколько скриптов последовательно?
Времени суток доброго. Вопрос такой, как можно в базе запустить несколько скриптов последовательно? ну то есть скажем 3 insert в разные...

Как динамически создать последовательно несколько TextBox по нажатию кнопки
Уважаемые специалисты C#! Подскажите пожалуйста, как динамически создать несколько TextBox-ов не разом , а последовательно, нажимая на одну...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru