gpt4 book ai didi

java - 输出到屏幕时图像定位不正确

转载 作者:行者123 更新时间:2023-12-02 02:45:45 24 4
gpt4 key购买 nike

我问你一个问题。我有一个包含不同尺寸图片的文件夹,从中我随机读取一张图片,减小其大小并在 jpanel 上使用 JLabel 进行推断 - 这很简单。撤回一张图片可以显示在正确的坐标处,而另一张图片可以在仪表上弹起。为什么会出现这种情况呢?随机图片忽略 SetBounds 和其他容器的边界。

    private void initialize() throws IOException {
frame = new JFrame();
frame.setBounds(100, 100, 1150, 664);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
panel = new JPanel ();
panel.setBounds(10, 10, 1150, 664);
frame.getContentPane().add(panel);

File f = new File ("C:/Users/user/Desktop/Ramms");
String[] names = f.list();
all_Images= new ImageIcon[names.length];
for(int i=0; i<names.length; i++){
all_Images[i]= new ImageIcon ("C:/Users/user/Desktop/Ramms/"+names[i]);
}
selected_Image = all_Images[random(0,all_Images.length)];
w= selected_Image.getIconWidth()/scl;
h= selected_Image.getIconHeight()/scl;
Image img = selected_Image.getImage();
bic = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics g = bic.createGraphics();
g.drawImage(img, 0, 0, w, h, null);
newIcon = new ImageIcon(bic);
panel.setLayout(null);

JLabel label1 = new JLabel(newIcon);
panel.add(label1).setBounds(0,100,w,h);
}

最佳答案

reduce its size

在我看来你并没有缩小它的大小:

bic = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB); 
Graphics g = bic.createGraphics();
g.drawImage(img, 0, 0, w, h, null);
newIcon = new ImageIcon(bic);

Icon 的大小是创建的 BufferedImage 的大小。

它不知道也不关心你在 BufferedImage 上绘制的内容。

几个解决方案:

  1. 创建 BufferedImage 时,您需要以其缩放尺寸创建图像。

  2. 使用 Image.getScaledInstance(...) 方法调整图像大小。

关于java - 输出到屏幕时图像定位不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44606388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com