2013-01-11 28 views
0

这是我的代码。为什么图像保存得这么小?

import java.awt.Color; 
    import java.awt.Graphics2D; 
    import java.awt.geom.Line2D; 
    import java.awt.image.BufferedImage; 
    import java.io.BufferedInputStream; 
    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.IOException; 
    import java.util.ArrayList; 
    import javax.imageio.ImageIO; 

public class Test { 

    public static void main(String args[]) throws IOException{ 

     int width = 400, height = 400; 
     Test plot = new Test(); 

     BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 

     Graphics2D g2d = bi.createGraphics(); 
     g2d.setPaint(Color.red); 


     g2d.draw(new Line2D.Double(0,0,0,50)); 
     g2d.draw(new Line2D.Double(0,50,50,50)); 
     g2d.draw(new Line2D.Double(50,50,50,0)); 
     g2d.draw(new Line2D.Double(50,0,0,0)); 


     ImageIO.write(bi, "PNG", new File("d:\\sample.PNG")); 
    } 
} 

enter image description here

你可以看到上面的输出图像。现在,由于正方形看起来非常小(我试着改变宽度和高度),所以我需要通过编程来扩展它。 (因为我需要显示机器人行进的路径)。我该怎么做?请帮忙。

请注意,形状在这里更重要,而不是维度。

+2

我不能取消:根据您的程序,您的广场实际上是50x50大小。 – Andremoniy

+2

图像大小为400x400,正方形为50x50,全部按预期工作。你想达到什么结果? – mishadoff

+0

啊。你是对的。抱歉。我的问题不清楚。我如何自动更改图像的大小。即使坐标较小,通过更改尺寸,我是否可以将窗口的尺寸更改为同样大的尺寸。 –

回答

1

我不知道如果我得到这个问题的权利,但

g2d.draw(new Line2D.Double(0,0,0,50)); 
    g2d.draw(new Line2D.Double(0,50,50,50)); 
    g2d.draw(new Line2D.Double(50,50,50,0)); 
    g2d.draw(new Line2D.Double(50,0,0,0)); 

给出了一个50x50像素的矩形因为你还没有定义任何转换。尝试类似

g2d.draw(new Line2D.Double(0,0,0,150)); 
    g2d.draw(new Line2D.Double(0,150,150,150)); 
    g2d.draw(new Line2D.Double(150,150,150,0)); 
    g2d.draw(new Line2D.Double(150,0,0,0)); 

呈现较大的矩形。

或者,您也可以定义缩放变换像

g2d.scale(3.0, 3.0); 

注意,这也扩展了线宽度,使结果不完全一样的Line2D.Double()呼叫使用不同的坐标。

有关坐标系和Graphics2D渲染过程的更多信息,另请参阅http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics2D.html

+0

啊。你是对的。抱歉。我的问题不清楚。我如何自动更改图像的大小。即使坐标较小,通过更改尺寸,我是否可以将窗口的尺寸更改为同样大的尺寸。 –

+1

是否要将图像的大小调整为矩形,还是要将矩形的大小更改为图像的大小?这个问题目前还不完全清楚。 –