您的位置:程序门 -> java -> gui 设计



一个简单的java图形处理程序, 就是运行不了, 刚学, 请高手帮忙, 在线等


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


一个简单的java图形处理程序, 就是运行不了, 刚学, 请高手帮忙, 在线等
发表于:2007-03-26 00:04:56 楼主
import   javax.swing.*;
import   java.awt.*;
import   java.awt.image.*;
import   java.awt.geom.affinetransform;
import   java.util.vector;
import   java.awt.geom.point2d;
public   class   main   {
       
       
        public   main()   {
             
                  imageicon     image   =   new     imageicon(getclass().getresource( "raptor.png "));
                image   i1   =image.getimage();
         
                bufferedimage   bimage   =   new   bufferedimage(   i1.getwidth(null),   i1.getheight(null),   bufferedimage.type_int_argb);      
                graphics2d   bg2d   =   bimage.creategraphics();
                bg2d.drawimage(i1,0,0,null);
               
                  image   im   =   bimage.getscaledinstance(200,   200,   image.scale_area_averaging);
                bg2d.dispose();
        }
       
   
        public   static   void   main(string[]   args)   {
              main   m   =new   main();
           
        }
       
}

生成的im图形长宽均为-1,   不明白
发表于:2007-03-26 08:55:261楼 得分:0
imageicon     image   =   new     imageicon(getclass().getresource( "raptor.png "));
image   i1   =image.getimage();

你这问题十之八九出在这俩语句上。系统需要从底层构建出一个image对象来,速度可能比较慢,而程序并不等待构建结束就进行下一步操作,可能等到bg2d.drawimage(i1,0,0,null);这条语句的时候,构建还没完成,自然就draw不上image了。
        解决方法一般是在上两条语句下边,添加一个mediatracker的对象,使用mediatracker来等待图像加载完毕再进行其他操作。

发表于:2007-03-26 09:17:512楼 得分:0
i1.getwidth的参数不能为null,必须是一个可观察的imageobserver接口
//----------------------
这样才行
import   java.awt.graphics;
import   java.awt.image;
import   java.awt.toolkit;
import   javax.swing.jpanel;

public   class   main   extends   jpanel   {
    image   i1   =   toolkit.getdefaulttoolkit().createimage( "d:/vml/images/jxx.gif ");

    public   main()   {
        system.out.println(i1.getwidth(this));
    }

    public   static   void   main(string[]   args)   {
        main   m   =   new   main();
    }

    public   void   paint(graphics   g)   {
        g.drawimage(i1,   20,   20,   this);
        system.out.println(i1.getwidth(this));
    }
}

发表于:2007-03-26 23:29:413楼 得分:0
import   java.awt.borderlayout;
public   class   paintframe   extends   jframe   {

public   paintframe()   {
this.setlayout(new   borderlayout());
this.add(new   jpanel()   {
public   void   paintcomponent(graphics   g)   {
super.paintcomponents(g);
imageicon   image   =   new   imageicon(getclass().getresource( "dock.png "));
image   i1   =   image.getimage();
system.err.println(i1.getwidth(null));
bufferedimage   bimage   =   new   bufferedimage(i1.getwidth(null),   i1.getheight(null),   bufferedimage.type_int_argb);
graphics2d   bg2d   =   bimage.creategraphics();
bg2d.drawimage(i1,   0,   0,   null);
g.drawimage(bimage,   0,0,null);;
image   im   =   bimage.getscaledinstance(200,   200,   image.scale_area_averaging);
g.drawimage(im,   0,   0,   null);;
bg2d.dispose();
}
});
initcomponents();

}

public   static   void   main(string[]   args)   {
paintframe   m   =   new   paintframe();
m.setvisible(true);
}

private   void   initcomponents()   {
system.currenttimemillis();
setsize(500,   375);
}

}
可以正常运行啊
我用jdk6测试成功,理论上
发表于:2007-03-27 00:39:334楼 得分:0
在你的类里加一个方法waitimage,然后在

imageicon   image   =   new   imageicon(getclass().getresource( "raptor.png "));
image   i1   =image.getimage();

后调用一次试试。

private   void   waitimage(image   img)   {
mediatracker   mt   =   new   mediatracker(this);
try   {
mt.addimage(img,   0);
mt.waitforall();
}   catch   (interruptedexception   ex)   {
ex.printstacktrace();
}   finally   {
mt.removeimage(img);
}
}
}
发表于:2007-03-30 15:16:165楼 得分:0
import   javax.swing.*;
import   java.awt.*;
import   java.awt.image.*;
import   java.awt.geom.affinetransform;
import   java.util.vector;
import   java.awt.geom.point2d;
public   class   main   {
       
       
        public   main()   {
             
                  imageicon     image   =   new     imageicon(getclass().getresource( "raptor.png "));
                image   i1   =image.getimage();
         
                bufferedimage   bimage   =   new   bufferedimage(   i1.getwidth(null),   i1.getheight(null),   bufferedimage.type_int_argb);      
                graphics2d   bg2d   =   bimage.creategraphics();
-------> > > > > > >
                bg2d.drawimage(i1,0,0,null);
------------- < < < <
这个地方错了,应该写成----〉〉〉〉bg2d.drawimage(i1,0,0,i1.getwidth(null),   i1.getheight(null),null)
               
                  image   im   =   bimage.getscaledinstance(200,   200,   image.scale_area_averaging);
                bg2d.dispose();
        }
       
   
        public   static   void   main(string[]   args)   {
              main   m   =new   main();
           
        }
       
}


快速检索

最新资讯
热门点击