第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

在java中并排顯示圖片

在java中并排顯示圖片

慕無忌1623718 2022-05-25 16:26:35
是否可以使用 BufferedImage 和 Graphics2D 并排顯示兩張圖片?還是我應(yīng)該用其他方法來做?在下面的代碼中,我能夠顯示兩個(gè)圖像,但圖片 1 與圖片 2 重疊。package zdjecie;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JPanel;public class ObrazPanel extends JPanel {    private BufferedImage image;    private BufferedImage image2;    public ObrazPanel() {        super();    File imageFile = new File("C:\\Users\\KostrzewskiT\\eclipse-workspace\\zdjecie\\src\\zdjecie\\java.jpg");    File imageFile2 = new File("C:\\Users\\KostrzewskiT\\eclipse-workspace\\zdjecie\\src\\zdjecie\\java2.jpg");         try {            image = ImageIO.read(imageFile);            image2 = ImageIO.read(imageFile2);        } catch (IOException e) {            System.err.println("Blad odczytu obrazka");            e.printStackTrace();        }        Dimension dimension = new Dimension(image.getWidth(), image.getHeight());        setPreferredSize(dimension);        Dimension dimension2 = new Dimension(image2.getWidth(), image2.getHeight());        setPreferredSize(dimension2);    }    @Override    public void paintComponent(Graphics g) {        Graphics2D g2d = (Graphics2D) g;        g2d.drawImage(image, 0, 0, this);        g2d.drawImage(image2, 200, 200, this);    }}
查看完整描述

3 回答

?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

你打setPreferredSize了兩次電話,結(jié)果第一次電話基本上什么也沒做。這意味著您始終擁有preferredSize等于第二張圖像的尺寸。您應(yīng)該做的是將大小設(shè)置為new Dimension(image.getWidth() + image2.getWidth(), image2.getHeight())假設(shè)兩者具有相同的高度。如果不是這種情況,請將 設(shè)置height為兩個(gè)圖像的最大值。

其次,您需要將第二張圖像與第一張圖像完全偏移第一張圖像的寬度:

g2d.drawImage(image, 0, 0, this);
g2d.drawImage(image2, image.getWidth(), 0, this);


查看完整回答
反對 回復(fù) 2022-05-25
?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

數(shù)學(xué)邏輯不正確。請參閱getPreferredSize()計(jì)算所需寬度的正確方法的方法,以及paintComponent(Graphics)將它們并排放置的方法的更改。

另一種選擇(未在此答案中檢查)是將每個(gè)圖像放入 aJLabel中,然后將標(biāo)簽添加到具有適當(dāng)布局的面板中。

這是更改的效果:

http://img1.sycdn.imooc.com//628de8660001b69f15270465.jpg

import java.awt.*;

import java.awt.image.BufferedImage;

import javax.swing.*;

import java.net.*;

import javax.imageio.ImageIO;


public class ObrazPanel extends JPanel {


    private BufferedImage image;

    private BufferedImage image2;


    public ObrazPanel() throws MalformedURLException {

        super();


        URL imageFile = new URL("https://i.stack.imgur.com/7bI1Y.jpg");

        URL imageFile2 = new URL("https://i.stack.imgur.com/aH5zB.jpg");


        try {

            image = ImageIO.read(imageFile);

            image2 = ImageIO.read(imageFile2);

        } catch (Exception e) {

            System.err.println("Blad odczytu obrazka");

            e.printStackTrace();

        }

    }


    @Override

    public Dimension getPreferredSize() {

        int w = image.getWidth() + image2.getWidth();

        int h1 = image.getHeight();

        int h2 = image2.getHeight();

        int h = h1>h2 ? h1 : h2;

        return new Dimension(w,h);

    }


    @Override

    public void paintComponent(Graphics g) {

        // always best to start with this.. 

        super.paintComponent(g);

        Graphics2D g2d = (Graphics2D) g;

        g2d.drawImage(image, 0, 0, this);

        g2d.drawImage(image2, image.getWidth(), 0, this);

    }


    public static void main(String[] args) {

        Runnable r = new Runnable() {

            @Override

            public void run() {

                try {

                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

                } catch (Exception useDefault) {

                }

                ObrazPanel o;

                try {

                    o = new ObrazPanel();

                    JFrame f = new JFrame(o.getClass().getSimpleName());

                    f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

                    f.setLocationByPlatform(true);


                    f.setContentPane(o);

                    f.pack();

                    f.setMinimumSize(f.getSize());


                    f.setVisible(true);

                } catch (MalformedURLException ex) {

                    ex.printStackTrace();

                }

            }

        };

        SwingUtilities.invokeLater(r);

    }

}


查看完整回答
反對 回復(fù) 2022-05-25
?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

每當(dāng)發(fā)生變化并將它們繪制到另一個(gè)緩沖圖像時(shí),我都會加入圖像。然后我可以在需要重新繪制面板時(shí)重新繪制組合圖像。

http://img1.sycdn.imooc.com//628de8770001aa5605270292.jpg

import java.awt.*;

import java.awt.image.BufferedImage;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.*;


public class SideBySideImagePanel extends JPanel {

    private static final long serialVersionUID = 5868633578732134172L;

    private BufferedImage left;

    private BufferedImage right;

    private BufferedImage join;


    public SideBySideImagePanel() {

        ClassLoader loader = this.getClass().getClassLoader();

        BufferedImage left = null, right = null;


        try {

            left = ImageIO.read(loader.getResourceAsStream("resources/Android.png"));

            right = ImageIO.read(loader.getResourceAsStream("resources/Java.png"));

        } catch (IOException e) {

            e.printStackTrace();

        }


        this.setLeft(left);

        this.setRight(right);

    }


    public BufferedImage getLeft() {

        return left;

    }


    public void setLeft(BufferedImage left) {

        this.left = left;

    }


    public BufferedImage getRight() {

        return right;

    }


    public void setRight(BufferedImage right) {

        this.right = right;

    }


    @Override

    public void invalidate() {

        super.invalidate();

        join = combineImages(left, right);

        setPreferredSize(new Dimension(join.getWidth(), join.getHeight()));

    }


    @Override

    public void paintComponent(Graphics g) {

        g.drawImage(join, 0, 0, null);

    }


    private BufferedImage combineImages(BufferedImage left, BufferedImage right) {

        int width = left.getWidth() + right.getWidth();

        int height = Math.max(left.getHeight(), right.getHeight());

        BufferedImage combined = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 

        Graphics g = combined.getGraphics();


        g.drawImage(left, 0, 0, null);

        g.drawImage(right, left.getWidth(), 0, null);


        return combined;

    }


    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override

            public void run() {

                JFrame frame = new JFrame("Image Joiner");

                SideBySideImagePanel panel = new SideBySideImagePanel();


                frame.getContentPane().add(panel);

                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                frame.setLocationRelativeTo(null);

                frame.pack();

                frame.setVisible(true);

            }

        });

    }

}


查看完整回答
反對 回復(fù) 2022-05-25
  • 3 回答
  • 0 關(guān)注
  • 220 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號