无论图像大小如何,drawImage()方法都会将图像绘制得很小

时间:2013-10-12 06:27:02

标签: java image swing jpanel paintcomponent

我有一个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 个答案:

答案 0 :(得分:6)

'即时修复'是以自然尺寸绘制该元素。例如。改变这个:

g.drawImage(weaponimage, 0, 0, getWidth(), getHeight(), this);

对此:

g.drawImage(weaponimage, 0, 0, this);

这似乎合乎逻辑。应该以自然尺寸绘制“武器”。


  

..问题是jpanel内的图像看起来很小,

没有。问题似乎是面板本身非常小。图像被绘制为由布局指定的面板的宽度和高度。

要增加(BG)图像的尺寸,请向面板添加组件(布局合理),并以适当的尺寸显示面板。

答案 1 :(得分:1)

可能是你的班级看起来像这样:

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()来更新面板上的图形。

答案 2 :(得分:0)

使用尺寸对象来改变图像的大小

@IBOutlet weak var imageDestinationDirectory: NSScrollView!

...

let destinationText = "Text to display"
imageDestinationDirectory.documentView!.insertText(destinationText)

执行此操作,您可以根据需要延长照片的长度和宽度。