2012-11-20 1 views
1

내 비트 맵을 얻고, 그것을 셰이더 타일 모드로 사용한다.알파 채널이있는 비트 맵 쉐이더. (알파는 검은 색을 그리는가?)

PNG는 모양 외곽선을 제외하고 대부분 알파입니다.

외곽선을 그 으려하지 않고 검은 색으로 둘러싸여 있으며, 마름모꼴이 아닙니다 (알파).

pnt.reset(); 

    if(backgroundColor == 1) 
    { 
      pnt.setColor(myColor); 
      pnt.setStyle(Paint.Style.FILL); 

    } 

    m_canvas.drawPath(path, pnt); 

//fillBMP = getBitmapFromAsset(m_context, "brush.png"); 
    fillBMP = BitmapFactory.decodeFile(mySDPath + "brush.png"); 
fillBMPshader = new BitmapShader(fillBMP, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); 

pnt.setShader(fillBMPshader); 

m_canvas.drawPath(path, pnt); 

왼쪽의 브러시는 아래의 예와 같습니다. 그러나 그것은 결과를 옳게 만듭니다.

enter image description here

+0

이 유'getBitmapFromAsset' 방법을 추가 할 수 있습니다 : 여기

는 비슷한 질문입니까? – Ronnie

+0

@ userSeven7s 파일에서 직접 동일합니다. 반영 할 편집을 참조하십시오. 또한 방금 ARGB_8888 모드 (옵션 인 어쨌든 기본값 임) 옵션을 추가했습니다. – Doomsknight

답변

2

당신은 당신의 Paint 객체에 XferMode를 설정해야합니다. 더 구체적으로는 PorterDuffXferMode 멀티플을 사용해야합니다. Android color overlay - PorterDuff modes

+0

예제 나 설명이 필요하지 않습니까? :) – Doomsknight

+0

트릭을 완료 한 것으로 보입니다.하지만 이제는 각 캔버스 그리기에서 흰색과 흰색 사이가 번갈아 나타납니다. 나는 그것의 별개의 문제를 생각한다. – Doomsknight

+0

이것은 좋은 해결책이 아닙니다. 그것의 매우 나쁜 effcts. http://softwyer.files.wordpress.com/2012/01/porterduffmodes.png를보고 싶으면 기본값 인'SrcOver'가 필요합니다. 그냥 계정에 알파를 복용하지 .. 간단한 게임 드로잉 루프. 알파가 아니라 흰색입니다. – Doomsknight

관련 문제