2

我在克隆 BitmapDrawable 时遇到问题。我在这篇文章中尝试了答案,但它创建了一个“浅”副本,我需要一个“深”副本,这样我就可以在不影响原件的情况下更改克隆中的像素。

我也试过这个:

    Bitmap bitmap = bdOriginal.getBitmap();
    BitmapDrawable bdClone = new BitmapDrawable(getResources(), bitmap.copy(bitmap.getConfig(), true));

但它似乎创建了一个不可变的克隆,即使我将 Bitmap.copy() 中的可变参数设置为“true”。也就是说,滤色器似乎不会改变克隆。我做错了吗?(编辑:我使用调试器确认 bitmap.mIsMutable = true)

总而言之,我需要一个 BitmapDrawable 的克隆,它可以用滤色器进行更改而不影响原件。有什么建议么?

提前致谢...

4

1 回答 1

1
  1. 新建Bitmap相同大小的。
  2. 为这个新创建画布Bitmap
  3. 把你的第一个画Bitmap到这个画布上。

例子:

Bitmap copy = Bitmap.createBitmap(original.getWidth(), original.getHeight(), original.getConfig());
Canvas copiedCanvas = new Canvas(copy);
copiedCanvas.drawBitmap(original, 0f, 0f, null);
于 2013-01-11T09:04:07.507 回答