当前位置: 首页 > 知识库问答 >
问题:

在Android中无法将位图修改为透明

解晟
2023-03-14
        mask = Bitmap.createBitmap(this.getWidth(),this.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas can = new Canvas(mask);
        Paint clear = new Paint();
clear.setColor(Color.TRANSPARENT);
can.drawRect(new Rect(0,0,this.getWidth(),this.getHeight()),clear);

但是,如果我先在画布上画一些其他的东西,然后尝试用透明度清除它,旧的数据仍然存在。例如:

clear.setColor(Color.argb(255,255,0,0));
can.drawRect(new Rect(0,0,this.getWidth(),this.getHeight()),clear);
clear.setColor(Color.TRANSPARENT);
can.drawRect(new Rect(0,0,this.getWidth(),this.getHeight()),clear);

我只看到一个巨大的红场。底部的两条线应该是“抹去”填充的红色,使其再次透明。最终,面具被绘制在另一张画布上,如下所示:

@Override
public void onDraw(Canvas c)
{
    c.drawBitmap(mask,0,0,null);

    super.onDraw(c);
}

共有1个答案

曾枫
2023-03-14
    mask = Bitmap.createBitmap(this.getWidth(),this.getHeight(), 
    Bitmap.Config.ARGB_8888);
    Canvas can = new Canvas(mask);

    Paint clear = new Paint();
    clear.setColor(Color.argb(255,255,0,0));
    can.drawRect(new Rect(0,0,this.getWidth(),this.getHeight()),clear);

    PorterDuffXfermode xfer = new PorterDuffXfermode(PorterDuff.Mode.CLEAR);
    clear.setXfermode(xfer);
    clear.setColor(Color.TRANSPARENT);
    can.drawCircle(this.getWidth()/2, this.getHeight()/2, this.getHeight()/2, clear);
 类似资料:
  • 问题内容: 我有一个Android应用程序,可将图像加载为位图并将其显示在ImageView中。问题在于图像似乎具有透明背景;这会导致图像上的某些黑色文本在黑色背景下消​​失。 如果将ImageView背景设置为白色,则可以完成这种工作,但是在图像上会出现丑陋的大边框,将其拉伸以适合父对象(实际图像在中间缩放)。 所以-我想将位图中的透明像素转换为纯色-但我不知道该怎么做! 任何帮助将不胜感激!

  • 我正在处理位图图像的透明部分用洋红色着色(在一些语言中,可以将颜色设置为透明)。我试图在原始位图图像中透明洋红色的像素。 我从SD卡加载位图: 将其复制到另一个位图以使其可变: 然后逐像素扫描,找到洋红色的像素,并尝试改变它们的透明度。 但是那些我希望变成透明的像素被转换成黑色。通过更改alpha,我发现最终颜色从中提到的颜色(不提及alpha)变为黑色。例如,变为白色,为灰色,而变黑。 我不知道

  • 问题内容: 我从JNI调用中获取了一个字节数组,并试图用它构造一个Bitmap对象。 我的问题是,以下代码返回空值。 有什么提示吗? PS:像素布局是BGR,而不是RGB。 问题答案: 该解码字节数组确实不适用于此格式。我从BGR手动更改为RGB。 然而, 可以引起: 08-29 14:34:23.460:错误/ AndroidRuntime(8638):java.lang.ArrayIndexO

  • 问题内容: 我正在尝试制作一个包含名称的列表。该列表应该是可修改的(添加,删除,排序等)。但是,每当我尝试更改ArrayAdapter中的项目时,程序都会崩溃,并显示错误。这是我的代码: 我尝试插入,删除和清除方法,但没有一个起作用。有人可以告诉我我做错了什么吗? 问题答案: 我自己尝试了一下…发现它没有用。所以我检查了ArrayAdapter的源代码并发现了问题。由数组初始化后,将其转换为不能修

  • null 那个代码有什么问题?我不明白为什么不能将ImageRi发送到ImageView。我还验证了我正在传递给setImageURI函数的Uri值是正确的。

  • 问题内容: 我有一个位图: 但我不会将图像显示给用户。我希望Alpha为100(总共255)。如果这不可能,我可以设置透明度吗? 问题答案: 您也可以尝试使用BitmapDrawable代替。如果这对您有用,则取决于您使用位图的方式… 编辑 正如评论者所问的那样,他如何使用alpha存储位图,下面是一些代码: