2010-07-17 5 views
14

Android 게임에서 작업 중이며 약간의 문제가 있습니다. 비트 맵 객체에 색상을 채우고 싶지만 색상을 채울 수는 있지만 이미지는 PNG 형식입니다. 및 로이드 (원형 또는 날카롭지, 투명한 색으로 둘러싸인 같은) getHeight 수() 또는 getWidth(), 즉안드로이드에서 비트 맵 객체를 채우는 방법

 
ImageView i = new ImageView(mContext); 
Bitmap bMap = BitmapFactory.decodeResource(this.mContext.getResources(), mImageIds[position]);

// for(int i1 = 0; i1 < bMap.getHeight();i1++) // for(int j = 0; j < bMap.getWidth(); j ++) // bMap.setPixel(i1, j, Color.RED); //can not set

i.setImageBitmap(bMap); i.setLayoutParams(new Gallery.LayoutParams(150, 100)); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setBackgroundResource(mGalleryItemBackground); i.setBackgroundColor(Color.TRANSPARENT);

답변

1

copy() 방법에 의해 비트 맵의 ​​변경 가능한 복사본을 가져온 픽셀을 수정하십시오.

41

솔리드 컬러 비트 맵을 채우기 위해하고자하는 경우 그것은 컬러로 모든 픽셀을 작성하여 비트 맵을 클리어

Bitmap b = /*however you get a bmp*/ 
b.eraseColor(color) 

사용하여 시도 할 수 있습니다.

베드로가

3

이 질문은 오래된 될 수 원하는 효과 수도 있지만 훨씬 더 간단한 해결책이 거기에있다. 대신 비트 맵 이미지에 필터를 적용, 당신은 직접 이미지 뷰에 적용 할 수 있습니다 : 당신은에 따라 (DARKEN, MULTIPLY, ..., CLEAR ADD) 다른 컬러 필터 모드를 시도 할 수 있습니다

imageView.setColorFilter(tintColor, PorterDuff.Mode.MULTIPLY); 

당신의 needs와 ImageView에 제공된 비트 맵을 비교합니다.

imageView.setColorFilter(tintColor); 
: 그것은 작동하지 않는 경우

, 모드를 제거하려고

관련 문제