Exemplo n.º 1
0
  /**
   * 创建透明变换图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法
   *
   * @param pic 源图片
   * @param srcX 绘制块在源图片的X偏移
   * @param srcY 绘制块在源图片的Y偏移
   * @param w 绘制宽度
   * @param h 绘制高度
   * @param alpha alpha通道值
   * @return
   */
  public static Image createTransparence(Image pic, int srcX, int srcY, int w, int h, int alpha) {

    int[] rgbData = new int[w * h];
    if (alpha < 0 || alpha > 255) {
      return null;
    }
    pic.getRGB(rgbData, 0, w, srcX, srcY, w, h);
    for (int i = rgbData.length - 1; i >= 0; --i) {
      rgbData[i] = RenderUtil.turnTransparence(rgbData[i], alpha);
    }
    return Image.createRGBImage(rgbData, w, h, true);
  }
Exemplo n.º 2
0
  /**
   * 逐行绘制透明变换图像(J2ME中只支持PNG格式图片),内存不够时调用次方法,绘制效率偏低
   *
   * @param g
   * @param pic 源图片
   * @param srcX 绘制块在源图片的X偏移
   * @param srcY 绘制块在源图片的Y偏移
   * @param w 绘制宽度
   * @param h 绘制高度
   * @param destX 显示的X坐标
   * @param destY 显示的Y坐标
   * @param alpha alpha通道值
   */
  public static void drawTransparenceByLine(
      SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY, int alpha) {

    int[] rgbData = new int[w];
    if (alpha < 0 || alpha > 255) {
      return;
    }
    for (int hd = h - 1; hd >= 0; --hd) {
      pic.getRGB(rgbData, 0, w, srcX, srcY + hd, w, 1);
      for (int i = rgbData.length - 1; i >= 0; --i) {
        rgbData[i] = RenderUtil.turnTransparence(rgbData[i], alpha);
      }
      g.drawRGB(rgbData, 0, w, destX, destY + hd, w, 1, true);
    }
  }
Exemplo n.º 3
0
  /**
   * 绘制透明变换图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法
   *
   * @param g
   * @param pic 源图片
   * @param srcX 绘制块在源图片的X偏移
   * @param srcY 绘制块在源图片的Y偏移
   * @param w 绘制宽度
   * @param h 绘制高度
   * @param destX 显示的X坐标
   * @param destY 显示的Y坐标
   * @param alpha alpha通道值
   */
  public static void drawTransparence(
      SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY, int alpha) {

    int[] rgbData = new int[w * h];
    Image transparenceImg;
    if (alpha < 0 || alpha > 255) {
      return;
    }
    pic.getRGB(rgbData, 0, w, srcX, srcY, w, h);
    for (int i = rgbData.length - 1; i >= 0; --i) {
      rgbData[i] = RenderUtil.turnTransparence(rgbData[i], alpha);
    }
    transparenceImg = Image.createRGBImage(rgbData, w, h, true);
    g.drawImage(transparenceImg, destX, destY, 0);
  }