实现百叶窗效果图

来源:互联网 发布:mac版本sai 编辑:程序博客网 时间:2024/06/10 15:03

import javax.microedition.lcdui.*;

class Abc extends Canvas implements Runnable {
/** 储存Image对象的变量 */
private Image imga;
private Image imgb;
   private boolean   isStopped;
private int    i;
/** 构造函数 */
Abc() {
  //取得图像
  try {
   imga = Image.createImage("/a.png";//空白图片
   imgb = Image.createImage("/b.png";//自己照片
  }catch(java.io.IOException e) {}


  //开始描绘线程
  doStart();
}

/** 启动动画线程的方法 */
private void doStart() {
  isStopped = false;
  Thread th = new Thread(this);
  th.start();
}

/** 停止动画线程的方法 */
private void doStop() {
  isStopped = true;
}

/** 动画线程处理部分 */
public void run() {
   i=0;
  while(! isStopped) {
   try {
    repaint();    //再描绘
    Thread.sleep(100);  //等待一定时间
   i+= 5;
   if(i >= getWidth()) {
     i = getWidth();
    }
   }catch(InterruptedException e){}
  }
}


/** 进行描绘的方法 */
protected void paint(Graphics g) {
  //将背景涂白
  g.setColor(0x00FFFFFF);
  g.fillRect(0, 0, getWidth(), getHeight());
  //画背景图空白
    g.drawImage(imga,0,0,20);
     
   //以下部分是关键
    g.setClip(0,0,128,i);
    //我自己照片 
    g.drawImage(imgb,0,0,20);
    g.setClip(0,0,i,128);
    g.drawImage(imgb,0,0,20);
    }
  }
  /*若为g.setClip(0,0,128,i);
    
    g.drawImage(imgb,0,0,20);
    是从上到下显示
    若为g.setClip(0,0,i,128);

    g.drawImage(imgb,0,0,20);
    是从左到右显示
    若为g.setClip(0,0,i,i);
    是什么忘拉自己演示
    */
原创粉丝点击