【发布时间】:2018-05-28 02:01:26
【问题描述】:
所以我有点担心。我知道如何在 android 中设置位图的 alpha 值。我不知道该怎么做是可逆的。所以,假设有人想将图像的 alpha 设置为 50%,所以他们这样做了。现在假设他们想将其设置为 75%(请记住,这是原始图像的 alpha 值)。目前,我拥有的是一个可以设置当前图像的 alpha 值的函数,所以如果有意义的话,它将是 50% alpha 值的 75%。我怎样才能使它成为原始图像的原因?
public Pixmap setAlpha(float newAlpha) { //integer between 0-100
if (newAlpha != alpha) { //to check if the current alpha value of the image is equal to your desired alpha. to avoid always halving you alpha value
float test = newAlpha/100.0f;
float test2 = test * 255;
alpha = test2;
Bitmap newBM = Bitmap.createBitmap(backupImg.getBitmap().getWidth(),backupImg.getBitmap().getHeight(), Bitmap.Config.ARGB_8888);
Canvas cc = new Canvas(newBM);
cc.drawARGB(0,0,0,0);
Paint newPaint = new Paint();
newPaint.setAlpha((int)test2);
cc.drawBitmap(backupImg.getBitmap(), 0, 0, newPaint);
img.setBitmap(newBM);
return img;
} else {
return img;
}
}
Pixmap 部分只是一个自定义位图类。 backupImg 只是 img 的一个副本,在该函数所属对象的构造函数中创建。
请记住,这将是一个基于画布的位图。如果我没记错的话 imageView 没有画在画布上?所以,再举一个例子。想象一个画在画布上的精灵,你想改变它的 alpha。因此,您可以使用我发布的功能进行操作。现在,假设您要撤消更改并将其恢复为精灵的原始 alpha 值,具有其他值。好吧,你不能因为图像的 alpha 值已经永久更改。我想要做的是使用另一个变量存储对原始图像的引用,并在我需要调整图像的 alpha 值时引用它。希望这是有道理的
【问题讨论】:
-
显然,您必须要么跟踪原始值,要么从未更改的图像中读取它,不是吗?
-
我在名为 backupImg 的变量中。它的值仅在构造对象时设置,否则永远不会更改。只是想弄清楚如何做到这一点
标签: java android canvas bitmap alpha