如何绘制带透明度的位图

4
如何绘制一个具有给定颜色透明度的位图?例如,我希望所有白色像素都是透明的。
3个回答

14

我不明白。如果只有一个参数,如何将某些颜色设置为透明?选择颜色至少需要三个参数。您能否写一个简短的示例,如何在SurfaceView上显示具有透明白色的位图? - Tomek Tarczynski
4
我应该早点回复,以下是翻译:p.setColor(Color.White)会将你的位图设置为白色。透明度由一个值来控制- alpha,范围在0到255之间。 0表示完全透明,255表示完全不透明- 因此p.setAlpha(125)在中间某个位置。这样清楚吗? - Manish Burman
1
这只是将整个位图设置为半透明,而不会产生预期的效果。 - Brian Griffey
是的,我没有意识到操作者只想使位图中的一种颜色透明,而不影响其他颜色。我误解了他的要求。抱歉! - Manish Burman
3
有趣的是,尽管这个回答没有回答原帖的问题,但它回答了我要搜索的那个问题。 :) 谢谢Manish! - William T. Mallard

4

你需要检查图像的每一个像素并更改其颜色。 你可以在这个帖子中找到答案。


2
这是最快的方法吗?我有点震惊,居然没有内置函数可以实现这个... - Tomek Tarczynski

1
另一种方法是在画布上使用透明颜色进行绘制(绘制孔)。 位图需要具有 alpha 通道。
    //Set transparent paint - you need all of these three
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));
    paint.setColor(Color.TRANSPARENT);

    // Do you wanna soften?
    // Set paint transparency:
    // 0 = transparent ink, no visible effect
    // 255 = full ink, hole in the bitmap
    p.setAlpha(192);

    // Do you want some blur?
    // Set blur radius in pixel
    paint.setMaskFilter(new BlurMaskFilter(10, Blur.NORMAL));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接