/** * 创建亮度变换图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法 * * @param pic * @param pic 源图片 * @param srcX 绘制块在源图片的X偏移 * @param srcY 绘制块在源图片的Y偏移 * @param w 绘制宽度 * @param h 绘制高度 * @param destX 显示的X坐标 * @param destY 显示的Y坐标 * @param delta * @return */ public static Image createBright( Image pic, int srcX, int srcY, int w, int h, int destX, int destY, int delta) { int[] rgbData = new int[w * h]; if (delta == 0) { return null; } pic.getRGB(rgbData, 0, w, srcX, srcY, w, h); for (int i = rgbData.length - 1; i >= 0; --i) { rgbData[i] = RenderUtil.turnBright(rgbData[i], delta); } return Image.createRGBImage(rgbData, w, h, true); }
/** * 绘制亮度变换图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法 * * @param g * @param pic 源图片 * @param srcX 绘制块在源图片的X偏移 * @param srcY 绘制块在源图片的Y偏移 * @param w 绘制宽度 * @param h 绘制高度 * @param destX 显示的X坐标 * @param destY 显示的Y坐标 * @param delta */ public static void drawBright( SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY, int delta) { int[] rgbData = new int[w * h]; Image brightImg; if (delta == 0) { return; } pic.getRGB(rgbData, 0, w, srcX, srcY, w, h); for (int i = rgbData.length - 1; i >= 0; --i) { rgbData[i] = RenderUtil.turnBright(rgbData[i], delta); } brightImg = Image.createRGBImage(rgbData, w, h, true); g.drawImage(brightImg, destX, destY, 0); }
/** * 逐行绘制亮度变换图像(J2ME中只支持PNG格式图片),内存不够时调用次方法,绘制效率偏低 * * @param g * @param pic 源图片 * @param srcX 绘制块在源图片的X偏移 * @param srcY 绘制块在源图片的Y偏移 * @param w 绘制宽度 * @param h 绘制高度 * @param destX 显示的X坐标 * @param destY 显示的Y坐标 * @param delta */ public static void drawBrightByLine( SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY, int delta) { int[] rgbData = new int[w]; if (delta == 0) { 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.turnBright(rgbData[i], delta); } g.drawRGB(rgbData, 0, w, destX, destY + hd, w, 1, true); } }