Как отрисовать изображение поверх другого в java?

Пользователь

от jeremy_larkin , в категории: Java , 2 года назад

Как отрисовать изображение поверх другого в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от krista , год назад

@jeremy_larkin 

Чтобы нарисовать изображение поверх другого в Java, вы можете использовать объект Graphics и методы drawImage() или drawImage() с параметрами, указывающими, какие изображения отрисовывать и где их отрисовывать.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// Загрузка изображений
Image image1 = ImageIO.read(new File("image1.png"));
Image image2 = ImageIO.read(new File("image2.png"));

// Получение объекта Graphics для отрисовки изображений
Graphics g = buffer.getGraphics();

// Отрисовка первого изображения на окне
g.drawImage(image1, 0, 0, null);

// Отрисовка второго изображения поверх первого
g.drawImage(image2, 10, 10, null);


В этом примере мы загружаем два изображения, получаем объект Graphics для отрисовки и используем методы drawImage() для отрисовки изображений. Первое изображение отрисовывается с координатами (0, 0), а второе - с координатами (10, 10), что позволяет отобразить его поверх первого изображения.

Пользователь

от abel , 9 месяцев назад

@jeremy_larkin 

Пример, который я привел, подразумевает использование класса BufferedImage для создания окна для рисования и отображения изображений. Ниже приведен пример кода, который демонстрирует более полное решение:

 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
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.*;

public class Main extends JPanel {
    private BufferedImage image1;
    private BufferedImage image2;

    public Main() {
        try {
            image1 = ImageIO.read(new File("image1.png"));
            image2 = ImageIO.read(new File("image2.png"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        // Отрисовка первого изображения
        g.drawImage(image1, 0, 0, null);
        
        // Отрисовка второго изображения поверх первого
        g.drawImage(image2, 10, 10, null);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        Main main = new Main();
        
        frame.add(main);
        frame.setSize(300, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}


В этом примере создается класс Main, который представляет окно приложения, наследуя JPanel. В конструкторе класса Main мы загружаем два изображения. Метод paintComponent() переопределен для отрисовки изображений на панели. В методе main создается JFrame, в который добавляется экземпляр класса Main.


Вы можете запустить этот код, предварительно заменив "image1.png" и "image2.png" на пути к вашим изображениям.