android 相关的API中,有没有使得加载的bmp图片设置为透明的方法?
比如图片中有个小人,背景色是黑色。然后不让显示背景直接显示小人。DirectX里面是可以通过colorkey来设置的。android找了半天,colorFilter自己不太会用后面几种模式。特来请教。
不要说直接把图片弄成png的带透明的。那样我也会,但是考虑android本身肯定还有其他的方法设置这个透明色
比如图片中有个小人,背景色是黑色。然后不让显示背景直接显示小人。DirectX里面是可以通过colorkey来设置的。android找了半天,colorFilter自己不太会用后面几种模式。特来请教。
不要说直接把图片弄成png的带透明的。那样我也会,但是考虑android本身肯定还有其他的方法设置这个透明色
真的要做透明度 可以在贴图之前 先像素级的处理
把透明色的aphla位全部透明。
我看到有Drawable.SetFilter的这样的函数啊,照理说应该可以过滤掉一些颜色吧。
好比说,你的图片是绿色背景,背景上有一个小人。那么在绘图时候,根据图片后面图层的颜色而忽略掉绿色,就可以了我之前做的MTK平台就是这种原理,相信Android也有类似的API
遍历每个像素点,如果颜色匹配的话,就把Alpha通道设为0就行了
那应该有针对某个像素点设置alpha值的函数吧。能告诉下不?
在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+中好像在网上看到有人用它实现了该功能.具体不详.希望有所帮助.
用这个这是Bitmap dstBitmap=srcBitmap.copy(Config.ARGB_4444, true);
第二个参数就是Mutable,是可以拷贝出一个可编辑的副本的!