2012-04-04 2 views
0

그래,이 그래픽 전문가를 찾아 봐야합니다. 사각형 비트 맵 (큰) 및 원형 비트 맵 (작은) 있습니다. 큰 원형 비트 맵 뒤에 큰 원형 비트 맵을 배치하고 작은 원형 비트 맵의 ​​모양을 취하는 큰 사각형 비트 맵 (즉, 사각형 비트 맵을 잘라내거나 그렇지 않으면)을 배치하고 싶습니다. 더 작은 원형 비트 맵은 약간의 투명도를 가지므로 변환 후 직사각형 비트 맵이 잘려나 간다.Android : 큰 비트 맵 뒤에 작은 비트 맵 및 큰 비트 맵을 배치하면 더 작은 비트 맵 모양이됩니다.

protected void onDraw(Canvas c) { 

int sc = canvas.saveLayer(x, y, x + w, y + h, null, 
           Canvas.MATRIX_SAVE_FLAG | 
           Canvas.CLIP_SAVE_FLAG | 
           Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | 
           Canvas.FULL_COLOR_LAYER_SAVE_FLAG | 
           Canvas.CLIP_TO_LAYER_SAVE_FLAG); 

canvas.drawBitmap(bmpSmallCircular, 0, 0, backgroundPaint); 
backgroundPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP)); 
canvas.drawBitmap(bmpLargeRectangular, 0 , 0, backgroundPaint); 
backgroundPaint.setXfermode(null); 
canvas.restoreToCount(sc); 

} 

그래서,이 솔루션의 일부를 제공하지만, (그것은 작은의 모양을 가정 않지만) 사각 비트 맵은 작은 비트 맵을 통해 그립니다 : 나는 다음과 같은 노력했다. 아마 뭔가 명백한 것이 빠졌을 것이고, 올바른 방향으로 포인트를 주거나 밀어 주어야 할 것입니다. 감사!

답변

0

먼저 큰 비트 맵은 다음 방금

canvas.drawBitmap(bmpLargeRectangular, 0 , 0, backgroundPaint); 
canvas.drawBitmap(bmpSmallCircular, 0, 0, backgroundPaint); 
+0

감사의 말씀을 교환 할 필요가 작은 비트 맵을 그리는, 이미 시도. 직사각형이 원보다 크기 때문에 원을 넘어서 확장됩니다 (필요한 것은 아닙니다). 원 밖에있는 직사각형의 어떤 부분이 숨겨 지도록 직사각형을 덮을 원이 필요합니다. – user1312428

+0

이미지를 실제로 보여주고 이미지를 표시 할 수 있습니까? 현재 – Pratik

+0

이미지를 추가하려고 시도했지만 새로운 이미지이므로 문제가있는 것처럼 보입니다. 그러나, 나는 여기에 샘플을 업로드 했어 : http://img805.imageshack.us/img805/7628/circleoverlay.png 그것을 통해 희망. 화살표 오른쪽에있는 이미지를 볼 수 있으면 사각형의 해시 영역이 보이지 않습니다. 감사. – user1312428