解决方案 »

  1.   

    画图片是什么意思? ImageIcon就好了呀
    package demo;import java.net.MalformedURLException;
    import java.net.URL;import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.SwingUtilities;public class Demo extends JFrame{
        private ImageIcon img;
        public Demo(){
            setTitle("demo");
            setSize(300,300);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            try {
                img = new ImageIcon(new URL("http://avatar.csdn.net/D/A/4/1_tanweijia888.jpg"));
                add(new JLabel(img));
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
        }
        
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                
                @Override
                public void run() {
                    Demo d = new Demo();
                    d.setVisible(true);
                }
            });
        }
    }
      

  2.   

    就是有没有一个类似drawImage的函数,但是它的参数是double类型的?
      

  3.   

    你要话现在这个Rectangle2D rect=new Rectangle2D.Double(x,y,z,k),吗?直接java.awt.Graphics2D.draw(Shape)接口即可。
      

  4.   

    不是,想用图片做动画,要设置图片的定点位置和宽度高度,那在graphics2D里有没有这样的函数呢?像
    drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)的话,坐标参数都是int型的,有没有同样的函数但是参数是double的?或者有没有像Rectangle2D那样能定义图片位置和大小函数?
      

  5.   

    理解了,尝试学会用AffineTransform,所有图形学讲变换(平移,反转,旋转,缩放等)一定会涉及到一个矩阵,这个类就是这个。java.awt.Graphics2D.drawRenderedImage(RenderedImage, AffineTransform)或者
    java.awt.Graphics2D.drawRenderableImage(RenderableImage, AffineTransform)方法其中drawRenderedImage比较常用,因为BufferedImage就是一个RenderedImage。
      

  6.   

    AffineTransform参数的含义,是指在当前坐标系基础上,叠加进行其他变化操作。
    比如你现在的坐标系当前位置在(0,0),如果想从(100,200)作为起点,等比例画你的矩形图片
    那么就是
    g2d.drawRenderedImage(img, AffineTransform.getTranslateInstance(100.0, 200.0));如果想以(100,200)为起点,且按照原样50%画图片
    可以
    AffineTransform transform = AffineTransform.getTranslateInstance(100,200); //先获得偏移
    transform.scale(0.5, 0.5); // 在此基础上,长宽均缩小至50%
    g2d.drawRenderedImage(img, transform);
    当然,也可以直接对g2d.setTransform,今后所有操作的坐标系统,都将以此为标准。不过,记得set之前,先getTransform老的坐标系统,以备不时之需。
      

  7.   

    噢好的好的!那这个img文件初始化可以这样子吗?
    Image icar = getToolkit().getImage("blude_car2.gif");
    g2.drawRenderedImage( icar , AffineTransform.getTranslateInstance(100.0, 200.0));
    我试了一下出现异常啊如果不是这样,那应该怎么样初始化呢?谢谢!!
      

  8.   

    用ImageIO读
    toolkit读出来的,根本不是BufferedIamge,而且目测你代码编译不通过
      

  9.   

     File f = new File("blude_car2.gif");                  
    try {
     Image image = ImageIO.read(f);
     BufferedImage buffer1 = new BufferedImage(image.getWidth(null),
                image.getHeight(null), BufferedImage.TYPE_INT_RGB);  
              g2.drawRenderedImage(buffer1, AffineTransform.getTranslateInstance(getSx()[i], getSy()[i]));
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    这样子对吗?我试了一下,图片显示不出来啊,是一块黑的。。
      

  10.   

    BufferedImage image = ImageIO.read(f);确保文件路径对