2013-10-03 2 views
3

내 안드로이드 응용 프로그램에서 img1과 img2의 두 이미지를 그립니다. 처음에 나는 Canvas에 img2를 그릴 것입니다. 그 후 나는 img1을 Canvas에 겹쳐 씁니다. img1은 img2와 겹치며 img1은 투명한 부분을 포함합니다. 문제는 img1의 투명한 부분이 검은 색으로 표시되었지만 img1의 투명한 영역을 겹치면 img2 영역이 표시되어야한다는 것입니다. 나는 그것을 할 수 없다. 이 문제를 해결하는 데 도움을주십시오. 감사합니다.캔버스는 비트 맵의 ​​투명한 부분을 검은 색으로 표시합니다 - Android

코드 :

protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     Bitmap b = BitmapFactory.decodeResource(getResources(), 
       R.drawable.white_bg); //img2 
     canvas.drawBitmap(b, 0, 0, null); 
     canvas.save(); 

     canvas.drawBitmap(realImage, 0, 0, null); //img1 
    } 

답변

0

내 코드에서 수정 한 후에 출력 결과를 얻었습니다. 여기에 내가 사용한 코드가있다.

public class FrameView extends View{ 

    Bitmap bitmap = null; 

    public FrameView(Context context) { 
      super(context); 
      this.context = context; 

     } 

     public FrameView(Context context, AttributeSet attrs) { 
      super(context, attrs); 
      bitmap = Bitmap.createBitmap(this.screenWidth, this.screenHeight, 
        Bitmap.Config.ARGB_8888); 

     } 

     public FrameView(Context context, AttributeSet attrs, int defStyle) { 
      super(context, attrs, defStyle); 
      this.context = context; 
     } 

    @Override 
     protected void onDraw(Canvas canvas) { 
      super.onDraw(canvas); 
      if (isTouchGestures) { 
       invalidate(); 
       mImgDrawables.get(0).draw(canvas); 
       canvas.drawBitmap(bitmap, 0, 0, null); 
      } 

     } 

    //this function is invoked from my activity which is using this view 
    public void setFrame(int frame) { 

      bitmap = BitmapFactory.decodeStream(getResources().openRawResource(
        frame)); 

      bitmap = Bitmap.createScaledBitmap(bitmap, this.screenWidth, 
        this.screenHeight, true); 

     } 
    } 
0

는 투명성에 대한 알파 채널을 설정하는 페인트 객체를 사용합니다.

Paint alphaChannel = new Paint() 
alphaChannel.setAlpha(100) // set alpha to 100 for complete transparent 
canvas.drawBitmap(b, 0, 0, alphaChannel); 
+0

ok..i 귀하의 코드를 사용해 보겠습니다. – zanky

+0

해봤지만 전체 비트 맵을 투명하게 만듭니다. 내 비트 맵의 ​​투명한 영역을 올바르게 표시하고 싶습니다. 지금 당장이 영역은 검은 색으로 표시됩니다. – zanky

+2

전체 투명도는 0이 아니라 100입니다. 전체 가시성은 alpha = 255에서 나타납니다. –

2

시도해보십시오. 비트 맵을로드 한 후에 bitmap.setHasAlpha(true)을 시도하십시오.

관련 문제