내 말을 들으십시오. 배경 위에 다른 비트 맵 위에 겹치고 싶은 배경 비트 맵이 있습니다. 그 위에 투명 컷 아웃이 있습니다. 컷 아웃이 기본 모양이라면 아무런 문제가 없지만 두 개의 원 (잎 모양의 일종)의 교차점이되도록 컷 아웃이 필요합니다. 세 번째 비트 맵을 만들어 컷 아웃 템플릿을 만들려고했으나 컷 아웃 템플릿을 사용하지 않고 깨끗한 컷 아웃 표현을 얻지 못했습니다.투명성을 interstection으로 만들었습니다.
누구나 이런 식으로 행동 할 수 있습니까? 여기
@Override
public void draw(Canvas canvas) {
float w = canvas.getWidth();
float h = canvas.getHeight();
// just used to set some proportions
float off = 300f;
Paint paint = new Paint();
// make a background bitmap with a yellow to green gradient
Bitmap bitmapBkg = Bitmap.createBitmap((int) w, (int) h, Bitmap.Config.ARGB_8888);
Canvas canvasBkg = new Canvas(bitmapBkg);
paint.reset();
paint.setShader(new LinearGradient(0, h/2 - off, 0, h/2 + off, Color.YELLOW, Color.GREEN, Shader.TileMode.CLAMP));
canvasBkg.drawRect(new RectF(0, 0, w, h), paint);
// make an overlay bitmap with a red to magenta gradient which will have the cutouts
Bitmap bitmapOver = Bitmap.createBitmap((int) w, (int) h, Bitmap.Config.ARGB_8888);
Canvas canvasOver = new Canvas(bitmapOver);
paint.reset();
paint.setShader(new LinearGradient(0, h/2 - off, 0, h/2 + off, Color.RED, Color.MAGENTA, Shader.TileMode.CLAMP));
canvasOver.drawRect(new RectF(0, 0, w, h), paint);
// make a bitmap of intersecting circles to be used as the cutout shape
Bitmap bitmapCut = Bitmap.createBitmap((int) w, (int) h, Bitmap.Config.ARGB_8888);
Canvas canvasCut = new Canvas(bitmapCut);
paint.reset();
paint.setColor(Color.BLACK);
//paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR));
canvasCut.drawCircle(w/2 - (off/2), h/2, off, paint);
paint.reset();
paint.setColor(Color.BLACK);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR));
canvasCut.drawCircle(w/2 + (off/2), h/2, off, paint);
// apply cutout to overlay
paint.reset();
paint.setColor(Color.BLACK);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_ATOP));
canvasOver.drawBitmap(bitmapCut, 0, 0, paint);
// draw background and overlay onto main canvas
paint.reset();
paint.setColor(Color.BLACK);
canvas.drawBitmap(bitmapBkg, 0, 0, paint);
canvas.drawBitmap(bitmapOver, 0, 0, paint);
}
내가 얻고 무엇을의 이미지입니다 : 여기 내 (간체) 시도는
내가이 또한 외부 부분 빨간 마젠타있을 것 얻기 위해 노력하고 있어요; 가운데의 눈 모양은 황록색이어야합니다.
어쩌면 PorterDuff을 활용하여 이미지를 결합 할 수 있습니까? http://stackoverflow.com/questions/8280027/what-does-porterduff-mode-mean-in-android-graphics-what-does-it-do –
그게 제가 사용하려고했던 것입니다. – trans
그리고 무엇이 잘못 되었습니까? –