Kxgx.com - 移动开发网

本站快讯:
搜索: 您的位置主页>移动开发>J2ME>>阅读文章:2D绘画操作中的坐标系统变换(原代码)|

2D绘画操作中的坐标系统变换(原代码)|

2006-09-01   来源:   作者:未知   【 】 评论:0 条
    

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Translate extends MIDlet
{
  private Display  display;     // The display
  private TranslateCanvas canvas;   // Canvas 
  public Translate()
  {
    display = Display.getDisplay(this);
    canvas  = new TranslateCanvas(this);
  }
  protected void startApp()
  {
    display.setCurrentcanvas );


  }
  protected void pauseApp()
  { }

  protected void destroyAppboolean unconditional )
  { }
  public void exitMIDlet()
  {
    destroyApp(true);
    notifyDestroyed();
  }
}

/*--------------------------------------------------
* Class Translate
*
* Draw image using translated coordinates
*-------------------------------------------------*/
class TranslateCanvas extends Canvas implements CommandListener
{
  private Command cmExit;  // Exit midlet
  private Translate midlet;
  private Image im = null;
  private int translatex = 0, translatey = 0;
  public TranslateCanvas(Translate midlet)


  {
    this.midlet = midlet;
    // Create exit command & listen for events
    cmExit = new Command("Exit", Command.EXIT, 1);
    addCommand(cmExit);
    setCommandListener(this);

    try
    {
      // Create immutable image
      im = Image.createImage("/bolt.png");
    }
    catch (java.io.IOException e)
    {
      System.err.println("Unable to locate or read .png file");


    }    
  

  protected void paint(Graphics g)
  {
    if (im != null)
    {
      // Clear the background
      g.setColor(255255255);

      g.fillRect(00, getWidth(), getHeight());
      // Translate coordinates
      g.translate(translatex, translatey);      
      // Always draw at 0,0
      g.drawImage(im, 00, Graphics.LEFT | Graphics.TOP);


    }
  }

  public void commandAction(Command c, Displayable d)
  {
    if (c == cmExit)
      midlet.exitMIDlet();
  }
  protected void keyPressed(int keyCode)
  {
    switch (getGameAction(keyCode))
    {
      case UP: 
        // If scrolling off the top, roll around to bottom
        if (translatey - im.getHeight() 0)


          translatey = getHeight() - im.getHeight();
        else
          translatey -= im.getHeight();          
        break;
      case DOWN:

        // If scrolling off the bottom, roll around to top
        if ((translatey + im.getHeight() + im.getHeight()) > getHeight())
          translatey = 0;
        else
          translatey += im.getHeight();          
        break;
      case LEFT:
        // If scrolling off the left, bring around to right
        if (translatex - im.getWidth() 0)
          translatex = getWidth() - im.getWidth();
        else

          translatex -= im.getWidth();          
        break;

      case RIGHT:
        // If scrolling off the right, bring around to left
        if ((translatex + im.getWidth() + translatex> getWidth())

          translatex = 0;
        else
          translatex += im.getWidth();          
        break;
    }        
    repaint();
  }


}

Tags:  
责任编辑:
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册)密码:匿名:
    评论总数:0 [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 帮助