2011-09-10 2 views
3

내가 참고로이 링크에 사용되는 페인트 ColorFilter 를 사용하여 비트 맵을 반전하려고에서 비트 맵 : http://www.mail-archive.com/[email protected]/msg47520.html안드로이드 반전 런타임

을하지만 전혀 영향을주지는 - 비트 맵은 당신이 말할 수 일반적으로 그려집니다 내가 뭘 잘못하고 있니? }

float invert [] = { 
     -1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 
     0.0f, -1.0f, 0.0f, 1.0f, 0.0f, 
     0.0f, 0.0f, -1.0f, 1.0f, 0.0f, 
     1.0f, 1.0f, 1.0f, 1.0f, 0.0f 

;

float 배열을 정의 생성자에서

설정 페인트 그리기에

ColorMatrix cm = new ColorMatrix(invert); 
    invertPaint.setColorFilter(new ColorMatrixColorFilter(cm)); 

참조() 메소드

c.drawBitmap(Bitmap, null, Screen, invertPaint); 

편집 :

: 나는 무승부 문에 페인트 할당함으로써 작업을 얻을 수 있었다

하지만 이제는 렌더링 속도가 느려졌습니다. y 단일 프레임) ... 동일한 방법 일 때 작동하는 이유가 있습니까?

EDIT2 : NEVERMIND !!! Lol, 문제는 두 개의 생성자가 있고 그 중 하나에서 colorfilter 만 구성하는 것이 었습니다 ... 프로세스가 여전히 CPU 집중적이며 프레임 속도 문제가 발생합니다.

+0

. 그것은 5x4가되어야 하는가? –

+1

그것이 무엇을 의미하는지 확실하지 않지만 작동합니다 ...하지만 천천히, 그냥 반전 된 비트 맵을 저장하고 바꿀만한 가치가 있습니다./ – GideonKain

답변

4

이것은 오래된 스레드입니다.

그러나 매트릭스가 투명도가있는 앤티 앨리어싱 이미지를 반전하는 데 적합하지 않습니다.

은 다음과 같아야합니다

색 반전을위한 매우 이상한 매트릭스의
float invert[] = 
{ 
-1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 
0.0f, -1.0f, 0.0f, 1.0f, 1.0f, 
0.0f, 0.0f, -1.0f, 1.0f, 1.0f, 
0.0f, 0.0f, 0.0f, 1.0f, 0.0f 
}; 
+0

그건 잘못된 것입니다. 알파 채널이 빨간색, 녹색, 파란색 채널 (두 번째 마지막 열)을 변경하는 것을 원하지 않습니다. 오른쪽 행렬은 문서에서 예제로 제공됩니다. https://developer.android.com/reference/android/graphics/ColorMatrix.html – fdermishin