Метод drawImage() рисует изображение маленького размера независимо от его размера.
У меня есть imagepanel
класс, который рисует изображение на JPanel. Моя проблема в том, что изображение кажется очень маленьким внутри jpanel
и я не знаю почему.
Я сделал все, что мог, и искал в сети и даже в некоторых java-книгах эту маленькую проблему, но безуспешно. Мне действительно нужна помощь в этом.
Я чрезвычайно новичок в Java.
class Weapons extends JPanel {
private Image weaponimage = weapon1.getImage();
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (image != null)
g.drawImage(weaponimage, 0, 0, getWidth(), getHeight(), this);
}
}
это класс изображения.
3 ответа
"Мгновенное исправление" - нарисовать этот элемент в натуральном размере. EG Изменить это:
g.drawImage(weaponimage, 0, 0, getWidth(), getHeight(), this);
К этому:
g.drawImage(weaponimage, 0, 0, this);
Что кажется логичным. "Оружие" должно быть нарисовано в натуральном размере.
..проблема в том, что изображение внутри jpanel кажется очень маленьким,
Нет. Проблема, кажется, в том, что сама панель очень мала. Изображение раскрашивается по ширине и высоте панели в соответствии с макетом.
Чтобы увеличить размер изображения (BG), добавьте компоненты на панель (правильно расположенные) и отобразите панель в нужном размере.
Может быть, ваш класс выглядит так:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
class Weapons extends JPanel {
// get image according to your application logic
BufferedImage image;
@Override
public void paint(Graphics g){
super.paintComponent(g);
g.drawImage(image, 0, 0, getWidth() - 1, getHeight() - 1, 0, 0, image.getWidth() - 1, image.getHeight() - 1, null);
}
public void setImage(BufferedImage image){
this.image = image;
}
}
class Main {
Weapons weapons;
public void updateWeapons(){
// create image
BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_3BYTE_BGR);
// draw on image
// TO UPDATE WEAPONS GUI, below steps are impotant
weapons.setImage(image);
weapons.repaint();
}
}
Вы должны переопределить метод paint(). Затем вы можете установить изображение и вызвать repaint() для обновления графики на панели.
Используйте размерный объект, чтобы изменить размер изображения
Weapons picture = new Weapons();
picture.setPreferredSize(new Dimension(110, 160));
panel.add(picture);
сделайте это, и вы можете растянуть длину и ширину вашей фотографии по мере необходимости.