怎样实现图片自上而下慢慢显示出来?
代码如下,请各位支个招,谢谢!
这样的话每次只能显示裁减区域的图片,其他区域均为白色,对于裁减区域我不是很懂.
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的时候只会显示(刷新)你所设置的区域屏幕.区域外面的地方是不会被刷新的...形象点说,就相当于一个镜头框一样...
[解决办法]
嘿嘿,网速慢的话,图片就上自上而下显示的
[解决办法]
可以做两个图层啊