我有一个单独的.png图像,上面有几个图标(带有透明区域),并希望从中裁剪单个图标。在Java ME中它是相当简单的,但在BlackBerry我没有找到一个等价物。 code here shows an example with a Bitmap,但这样做会使用白色绘制透明区域:
public Bitmap cropImage(Bitmap image, int x, int y, int width, int height) {
Bitmap result = new Bitmap(width, height);
Graphics g = new Graphics(result);
g.drawBitmap(0, 0, width, height, image, x, y);
return result;
}
我需要使用相同的EncodedImage来保持透明度,但Graphics
构造函数只接受Bitmap
。有没有其他方法可以实现这一目标?感谢您的任何提示。
更新:
如果省略中间的Graphics对象,并且将ARGB数据直接设置为新创建的Bitmap,则可以保留透明度,如下所示:
public Bitmap cropImage(Bitmap image, int x, int y, int width, int height) {
Bitmap result = new Bitmap(width, height);
int[] argbData = new int[width * height];
image.getARGB(argbData, 0, width, x, y, width, height);
result.setARGB(argbData, 0, width, 0, 0, width, height);
return result;
}
答案 0 :(得分:1)
对不起,我没有尝试过这段代码,但它应该会给你一个想法:
int[] argbData = new int[ width * height ];
image.getARGB( argbData,
0,
width
x,
y,
width,
height);
Bitmap result = new Bitmap(width, height);
Graphics g = new Graphics(result);
g.drawARGB(argbData , 0, width, 0, 0, width, height);
return result;
答案 1 :(得分:0)
尝试使用
g.setGlobalAlpha(0);
之前
g.drawBitmap(0, 0, width, height, image, x, y);
或者您可以使用
drawARGB(int[] data, int offset, int scanLength, int x, int y, int width, int height)
保留目标图像中的alpha。