Изменение размера изображений для полноэкранных приложений? - PullRequest
1 голос
/ 04 декабря 2011

У меня есть полноэкранный JFrame, и я хотел бы создать для него фон, заполнив JLabel изображением и сопоставив его размер с размером экрана.

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

Текущий код ниже, спасибо!

public void addBackground(ImageIcon imgIcon) {
  Image img = imgIcon.getImage();
  BufferedImage buffImg = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
  BufferedImage resizeBuffImg = resize(buffImg, screenSize.width, screenSize.height); 
  Image finalImg = Toolkit.getDefaultToolkit().createImage(resizeBuffImg.getSource());
  ImageIcon back = new ImageIcon(finalImg);

  System.out.println("IMAGE WIDTH: " + back.getIconWidth());
  System.out.println("IMAGE HEIGHT: " + back.getIconHeight());

  JLabel backgroundLabel = new JLabel(back);
  getContentPane().add(backgroundLabel);      
}

public BufferedImage resize(BufferedImage image, int width, int height) {
  int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
  BufferedImage resizedImage = new BufferedImage(width, height, type);
  Graphics2D g = resizedImage.createGraphics();
  g.setComposite(AlphaComposite.Src);

  g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
  RenderingHints.VALUE_INTERPOLATION_BILINEAR);

  g.setRenderingHint(RenderingHints.KEY_RENDERING,
  RenderingHints.VALUE_RENDER_QUALITY);

  g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  RenderingHints.VALUE_ANTIALIAS_ON);

  g.drawImage(image, 0, 0, width, height, null);
  g.dispose();
  return resizedImage;
} 

РЕДАКТИРОВАТЬ - Понял!Использование getScaledInstance () в Image работает.Это не идеально, но я собираюсь уменьшать большие изображения, а не уменьшать их.

...