android 相关的API中,有没有使得加载的bmp图片设置为透明的方法?
比如图片中有个小人,背景色是黑色。然后不让显示背景直接显示小人。DirectX里面是可以通过colorkey来设置的。android找了半天,colorFilter自己不太会用后面几种模式。特来请教。
不要说直接把图片弄成png的带透明的。那样我也会,但是考虑android本身肯定还有其他的方法设置这个透明色

解决方案 »

  1.   

    好像没有见过,透明色的概念,因为他就是argb 32位的平台
    真的要做透明度 可以在贴图之前 先像素级的处理 
    把透明色的aphla位全部透明。
      

  2.   

    ....
    我看到有Drawable.SetFilter的这样的函数啊,照理说应该可以过滤掉一些颜色吧。
      

  3.   

    在绘制图片的时候,不绘制需要透明的像素点。
    好比说,你的图片是绿色背景,背景上有一个小人。那么在绘图时候,根据图片后面图层的颜色而忽略掉绿色,就可以了我之前做的MTK平台就是这种原理,相信Android也有类似的API
      

  4.   

    Android在Canvas上画绘制东西的时候都是通过Paint类的参数设置字体的大小、图片的透明度的。直接给Paint类setAlpha(intValue)就行了。可以绘制png、bmp都没问题的……
      

  5.   

    还具体接触到这个 只做过XML的透明和Activity整个的透明
      

  6.   

    最简单的办法:PS成透明的png不就行了吗?也可以自己写设置透明色的办法
    遍历每个像素点,如果颜色匹配的话,就把Alpha通道设为0就行了
      

  7.   

    nyzhl:你提到了颜色匹配的话,把alpha通道设置为0
    那应该有针对某个像素点设置alpha值的函数吧。能告诉下不?
      

  8.   


    在Android的C层,我已证实是可以实现BMP图片的某一颜色过滤的.用的是颜色过滤器.但发现没有JAVA相对应的方法,可能与JAVA不支持函数指针的原因有关.在Android的Java层API,有提供相关颜色过滤器.
    主要有三种过滤器.
    ColorMatrixColorFilter, LightingColorFilter, PorterDuffColorFilter 而其中的android.graphics.PorterDuffColorFilter的功能比较相近于楼主的意图.在这个类的
    public PorterDuffColorFilter (int srcColor, PorterDuff.Mode mode)中指定不同的MODE就有不同的源色和目的色的运算的组合效果.我没有全部组合的尝试,.楼主可以多试下.还有一个就是ColorMatrixColorFilter,这个没有多研究.不过应该与GDI+的相似,GDI+中好像在网上看到有人用它实现了该功能.具体不详.希望有所帮助.
      

  9.   

    试试看bitmap.eraseColor(Color.TRANSPARENT)
      

  10.   

    楼上的方法是对于可变位图的,从资源加载的位图,isMutable()属性为FALSE,不该改变,无法进行像素操作
      

  11.   


    用这个这是Bitmap dstBitmap=srcBitmap.copy(Config.ARGB_4444, true);
    第二个参数就是Mutable,是可以拷贝出一个可编辑的副本的!