2012-04-21 6 views
3

달성하고자하는 것에 대해 약간의 도움이 필요합니다. 내 응용 프로그램에서 캔버스에 그릴 수 BitmapShader 사용하고 있습니다. 나는 사용자 지정 PNG 파일을 셰이더로 내 페인트 변수로 설정하고 쉐이더의 색을 변경하려고합니다. 내가 사용하여 색상의 변경할 수 있습니다 찾을Android BitmapShader 변경 색상

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.particle_point); 
    BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); 
    mPaint.setShader(shader); 
    ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF); 
    mPaint.setColorFilter(filter); 

: 여기

는 예를 들어, 내가 사용 코드입니다

ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF);

,하지만 난 할 수 있어야합니다 이 색상 코드를 반환하는 사용자 지정 색상 선택 도구를 사용하여 색상을 변경하십시오. -234423123.

그래서이 색상 코드를 사용하여 페인트 변수에 색상으로 설정할 수있는 방법이 있습니다.

미리 감사드립니다.

+0

어떤 색상 선택 도구를 사용하고 있습니까? – Moss

+0

이 색상 선택 도구를 사용하고 있습니다 : http://code.google.com/p/color-picker-view/ –

답변

3

16 진수로 변환되는 색상은 FFFFFFFFF206FCAD입니다. 따라서 youst는 8 개의 선행 F를 제거해야합니다.

int color = -234423123;//0xFFFFFFFFF206FCAD 
int myColor = 0x00000000FFFFFFFF & color; 

myColor는 괜찮습니다.

0

는 16 진수 문자열을 얻으려면 :

"#"+Integer.toHexString(n)); 

하지만 당신의 색상 선택기 그냥 작동하기에 충분해야하는 색상의 int 값을 반환합니다! 나는이 그냥 작동한다 잘못이 아닌 경우

ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF); 

그냥

(당연히 그것의 앞에 0X하지 않고) INT에 ColorPicker를 반환 색을 나타내는 값을 변경 ... 벌금으로!

+0

내 색상 선택기는 -32314112와 비슷한 값을 반환합니다. 내 'ColorFIlter'에서이 값을 첫 번째로 설정하면 어떤 색상을 선택하든 검정색을 유지합니다. –

+0

오케이, 음수 값으로는 작동하지 않는 것 같습니다.이 경우 모스의 해결책이 맞습니다! – Ferdau

1

모스의 대답에 조금 더 자세히 설명해주세요.

ColorFilter filter = new LightingColorFilter(myColor , myColor); 

을 그리고 그것은 작동합니다 : 그가 원하는 값으로 myColor 사용할 수 있으며 셰이더에 대한 권리 값을 설정하는 것이 좋습니다로서 당신은이처럼 LightingColorFiltermyColor을 추가해야합니다.

+0

그 답을 많이 주셔서 고맙습니다. 나는 그걸 알아 내려고 애 썼습니다. –

+0

멋진 추가 +1 – Moss