J2ME图象的处理

一 Image类

 所属包名:javax.microedition.lcdui

  方法:
   ㈠   createImage创建不可变图像

1   从一个指定名称的源图象文件中创建一个不可改变的图象

          语法:public static Image createImage(String name ) throws IOException

          name   源图像名称

2  从一个字节数组存储中创建一个不可变图象

         语法:public static Image createImage(byte[ ] imageData, int imageOffset ,int imageLength)

          imageData  图像字节数组

          imageOffset   起始数据位置

          imageLength    数据的长度

3    从二进制数据流中创建一个不可变图象

       语法:public static Image createImage(java.io.InputStream stream) throws java.io.IOException

          stream   包含图象数据字节流

㈡ 用drawImage把图象绘制到手机屏幕上去

     语法:public void drawImage(Image img, int x, int y, int anchor )

    x,y轴座标,anchor 基点

    设置x,y点是哪个基点,基点9种位置

    
用法:   g.drawImage( image, 50,50, HCENTER | VCENTER )

㈢ 创建可变图像

 1  方法: public static Image createImage(int width, int height )

  2  创建一个绘制可变图像的Graphics对象,用getGraphics方法
      public Graphics  getGraphics( )

  3  检测图像是否可变,用isMutable方法
      public boolean isMutable( )

  4 不可变图像不能转化成可变图像,但是可变图像可以转化为不可变图像,用的是
    public static Image createImage( Image source )
     source  源图像

㈣图像方位的变换

  语法 :  public static Image createImage(Imge image , int x, int y, int width, int height ,int transform  )
    x,y是图像左上角的座标,width和height是图像的宽度和高度
    transform的值
            Sprite.TRANS_NONE      取值  0   效果:保持原位
            Sprite.TRANS_ROT90     取值  5   效果:顺时针旋转90度
            Sprite.TRANS_ROT180   取值  3   效果:顺时针旋转180度
            Sprite.TRANS_ROT270   取值  6   效果:顺时针旋转270度
            Sprite.TRANS_MIRROR   取值  2   效果:沿垂直轴翻转
            Sprite.TRANS_MIRROR_ROT90   取值  7     效果:沿垂直轴翻转再顺时针旋转90度
            Sprite.TRANS_MIRROR_ROT180   取值  1   效果:沿垂直轴翻转再顺时针旋转180度
            Sprite.TRANS_MIRROR_ROT270   取值  4   效果:沿垂直轴翻转再顺时针旋转270度

㈤ 透明度的处理

    语法:   public static Image createRGBImage( int[ ] rgb, int width, int height, boolean  processAlpha )
      rgb  以0xAARRGGBB格式存储ARGB图像的数组
      width ,height 图像的宽度和高度
       processAlpha   true图像数据包含透明数据,false图像数据不包含透明数据

    用GetRGB获取图像中一个指定区域ARGB数据
   public void getRBG( int  [ ] rgbData ,int offset ,int scanlength ,int x, int y ,int width ,int height )
   rgbData   以0xAARRGGBB格式存储ARGB图像的数组
   offset     第一个图像数据在ARPG数组中对应的元素索引
   scanlength    图像每行数据个数
   x,y  图像区域左上角座标     width height 绘制图像区域的宽度和高度

二    TiledLayer类

  所属包名:javax.microedition.lcdui.game

  ㈠构造器的语法
   public TiledLayer ( int columns, int rows, Image image, int tileWidth ,int tileHeight )
    columns   背景宽度,以所占单元格数量为单位
    rows    背景的高度,以所占单元格数量为单位
     image  包含构成背景各幅图块的整体图像对象
    tileWidth   每幅图块的宽度,以像素为单位
    tileHeight  每幅图块的高度,以像素为单位

 在后期可以用setStaticTileSet( )方法重新为TiledLayer类实例指定图块对象
   public void setStaticTileSet( Image image, int tileWidth ,int tileHeight )

㈡静态场景处理

   为单元格设定静态图块
public void setCell ( int col, int row ,int tileIndex )
 col 单元格列号
 row 单元格行号
 tileIndex 图块索引号

  为指定举行区域中多个单元格设定静态图块
  public void fillCells(  int col, int row , int numCols, int numRows ,int tileIndex  )
  numCols   指定区域单元格每行个数
  numRows  指定区域单元格每列个数

㈢动态场景处理

  创建动态索引
   public int createAnimatedTile ( int staticTileIndex )
  staticTileIndex   静态图块索引号
   可以看出动态索引需要指定静态图块作为初始图块,为了实现动画效果,在变换画面时调用setAnimatedTile( )方法

  动态图块索引号与静态图块索引号建立关联
   public void setAnimatedTile( int animatedTileIndex , int staticTileIndex  )
  animatedTileIndex    动态图块索引号
  staticTileIndex       静态图块索引号staticTileIndex  可以是数组

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章