如何把 midp2.0 画图方法转化成 midp1.0

midp2.0 中drawRegion() 方法在midp1.0 中不支持,而其Script 类也是因为使用了drawRegion()方法,使得Script这个广泛使用的精灵类得到了限制, 参考以下代码希望对解决以上问题能提供一点参考价值。

 

 /**
  * 画图方法  默认使用MIDP 2.0 方法,midp 1.0 需要对IsApiV1=true 设置
  *
  * @param g
  * @param image
  *            原图
  * @param modX
  *            原图上的X坐标
  * @param modY
  *            原图上的y坐标
  * @param w
  *            Clip 宽
  * @param h
  *            Clip 高
  * @param transform
  *            翻转情况
  * @param screenX
  *            屏幕X
  * @param screenY
  *            屏幕Y
  */

 public static void draw(Graphics g, Image image, int modX, int modY, int w,
   int h, int transform, int screenX, int screenY, int anthor) {
  if(IsApiV1){//是否是midp1.0 忽略翻转
   drawClip(g,image,screenX, screenY,  w, h, modX, modY,
     anthor);
  }else{
       g.drawRegion(image, modX, modY, w, h, transform, screenX, screenY,
    anthor);
  }
 }

 

 

 

 /**
  * 画翻转后的图片
  *
  * @param g
  * @param image
  *            原图
  * @param clipx
  *            目的画布上的X坐标
  * @param clipy
  *            目的画布上的Y坐标
  * @param clipw
  *            显示的宽
  * @param cliph
  *            显示的高
  * @param offx
  *            原图上的显示域x坐标
  * @param offy
  *            原图上的显示域y坐标
  * @param anthor 锚点          
  */
 
 private static void drawClip(Graphics g, Image image, int clipx, int clipy,
   int clipw, int cliph, int offx, int offy,int anthor) {
  int x, y, w, h;
  x = g.getClipX();
  y = g.getClipY();
  w = g.getClipWidth();
  h = g.getClipHeight();

  switch (anthor) {
  case FontStyle.LEFTTOP:

   break;
  case FontStyle.LEFTBOTTOM:
   clipy-=cliph;
   break;
  case FontStyle.RIGHTTOP:
   clipx-=clipw;
   break;
  case FontStyle.RIGHTBOTTOM:
   clipx-=clipw;
   clipy-=cliph;
   break; 
  case FontStyle.HCENTERTOP:
   clipx-=(clipw/2);
   break;
  case FontStyle.HCENTERBOTTOM:
   clipx-=(clipw/2);
   clipy-=clipw; 
   break; 
  }
  
  g.setClip(clipx, clipy, clipw, cliph);
  g.drawImage(image, clipx - offx, clipy - offy, 0);
  g.setClip(x, y, w, h);
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值