2012-04-04 3 views
0

D'accord, doivent se tourner vers les experts graphiques sur celui-ci. J'ai un bitmap rectangulaire (grand) et un bitmap circulaire (petit). Je souhaite placer le grand bitmap rectangulaire derrière le petit bitmap circulaire avec le bitmap rectangulaire plus grand prenant la forme du bitmap circulaire plus petit (c'est-à-dire que le bitmap rectangulaire doit être découpé ou non). Le bitmap circulaire plus petit a une certaine transparence et ainsi le bitmap rectangulaire coupé montrera à travers après la transformation. Je l'ai essayé ce qui suit:Android: Placez grand bitmap derrière petit bitmap et grand bitmap devrait prendre la forme de plus petit bitmap

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); 

} 

Ainsi, cela donne une partie de la solution, mais le bitmap rectangulaire dessine sur le bitmap plus petit (bien qu'il n'assume la forme de la plus petite). Il me manque probablement quelque chose d'évident et j'apprécierais un point ou je pousserais dans la bonne direction. Merci!

Répondre

0

premier tirage du grand bitmap puis tirez la petite image que vous avez besoin d'échanger la déclaration que vient

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

Merci, déjà essayé. Puisque le rectangle est plus grand que le cercle, il s'étend au-delà du cercle (pas ce dont j'ai besoin). J'ai besoin du cercle pour couvrir le rectangle avec n'importe quelle partie du rectangle à l'extérieur du cercle à cacher. – user1312428

+0

pouvez-vous montrer l'image comment vous voulez et comment vous obtenez actuellement – Pratik

+0

J'ai essayé d'ajouter une image, mais depuis que je suis nouveau, il semble que ce soit un problème. Cependant, j'ai téléchargé l'échantillon ici: http://img805.imageshack.us/img805/7628/circleoverlay.png Espérons que cela passe à travers. Si vous pouvez voir l'image, à droite de la flèche, la zone hachurée du rectangle est masquée. Merci. – user1312428