首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

怎样实现图片自上而下慢慢显示出来?解决办法

2012-01-12 
怎样实现图片自上而下慢慢显示出来?代码如下,请各位支个招,谢谢!这样的话每次只能显示裁减区域的图片,其他

怎样实现图片自上而下慢慢显示出来?
代码如下,请各位支个招,谢谢!
这样的话每次只能显示裁减区域的图片,其他区域均为白色,对于裁减区域我不是很懂.
public   class   AplashCanvas   extends   Canvas   {
        /**
          *   constructor
          */
     
   
        private   Displayable   nextUI;
        private   int   width;
        private   int   height;
        private   Font   font;
        private   Image   img=null;
        private   int   y;
        private   Timer   timer=null;
        private   boolean   first;
        public   AplashCanvas(Displayable   disp)   {
                first=true;
                this.nextUI=disp;
                width=this.getWidth();
                height=this.getHeight();
                font=Font.getDefaultFont();
              timer=new   Timer();
               
                //初始化图片
                try
                {
                        img=Image.createImage( "/images/011.png ");
                  }
                catch(IOException   e)
                {
                        e.printStackTrace();
                }
                //初始化绘图纵坐标
              y=this.height/2-this.img.getHeight()/2;
           
        }
       
        /**
          *   paint
          */
        public   void   paint(Graphics   g)   {
                if(first)
                {
                        g.setColor(0xffffff);
                        g.fillRect(0,0,this.getWidth(),this.getHeight());
                    }
                //设置裁剪区域
                g.setClip(0,y,width,5);
              //   System.out.println(y);  
                //绘制图片
                g.drawImage(this.img,this.width/2,this.height/2,Graphics.VCENTER|Graphics.HCENTER);


                //图片绘制完后绘制文本
                if(y> (this.height+this.img.getHeight()/2))
                {
                  g.drawString( "欢迎 ",this.width/2,this.height/2,Graphics.HCENTER|Graphics.TOP);
                }
               
             
               
               
        }
        protected   void   showNotify()
        {
            timer.schedule(new   Task(),0,150);
        }
    //任意键被按下就跳转到下一UI
        protected     void   keyPressed(int   keyCode)   {
                this.dismiss();
        }

 
 
     
          private   void   dismiss(){//关闭当前窗口
            timer.cancel();
            Welcome.display.setCurrent(this.nextUI);
          }
public   class   Task   extends   TimerTask   {
       
       
    public   void   run()   {
            repaint();
            y=y+5;
            //画完图片进入下一个UI
            if(y> (height+img.getHeight())/2+3*font.getHeight())
            {
                    //休眠500ms
                    try
                    {
                            Thread.sleep(500);
                           
                    }
                    catch   (Exception   e)
                    {
                            e.printStackTrace();
                    }
                    dismiss();
            }
         
        }
 
  }

[解决办法]
setClip的作用是设置一个矩形区域是可见的,后续绘制的任何内容只有和这个区域重合的才可以显示在屏幕上
[解决办法]
关注
[解决办法]
mark

------解决方案--------------------


setClip是相对它的Graphics对象坐标系而言的,既在paint的时候只会显示(刷新)你所设置的区域屏幕.区域外面的地方是不会被刷新的...形象点说,就相当于一个镜头框一样...

[解决办法]
嘿嘿,网速慢的话,图片就上自上而下显示的
[解决办法]
可以做两个图层啊

热点排行