Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在调整帧大小之前,缩放的图像不会正确显示_Java_Image_Swing_Jframe_Paint - Fatal编程技术网

Java 在调整帧大小之前,缩放的图像不会正确显示

Java 在调整帧大小之前,缩放的图像不会正确显示,java,image,swing,jframe,paint,Java,Image,Swing,Jframe,Paint,我正在尝试用仿射变换缩放图像。但是,当帧最初出现时,图像不会正确显示 但在调整帧的大小后,图像会完美地显示出来 这是代码 public class MainFrame extends javax.swing.JFrame { Line line; BufferedImage bi; public MainFrame() { initComponents(); try { bi = ImageIO.read(new File("map.png"))

我正在尝试用仿射变换缩放图像。但是,当帧最初出现时,图像不会正确显示

但在调整帧的大小后,图像会完美地显示出来

这是代码

public class MainFrame extends javax.swing.JFrame {

  Line line;
  BufferedImage bi;

  public MainFrame() {
    initComponents();

    try {
      bi = ImageIO.read(new File("map.png"));
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    AffineTransform old = g2.getTransform();
    g2.scale(0.25, 0.25);
    g2.drawImage(bi, 0, 0, null);
    g2.setTransform(old);
  }

  ...
}

可能是您的
图形
已剪裁到组件的边界。如果要缩放,您可能还需要缩放剪辑边界。1)为了更快地获得更好的帮助,请发布一个(最小完整且可验证的示例)。2) 例如,获取图像的一种方法是热链接到中看到的图像。3)
g2.drawImage(bi,0,0,null)应该是
g2.drawImage(bi,0,0,this)
重写的paint应该做的第一件事是调用
super
方法。这可能是ImageObserver的正确方法,那么JFrame不是任何图形的合适容器。不管怎样,使用带有paintComponent的JPanel,如果没有您的SSCCE/MCVE/MCTRE,就不知道了