0
Ich versuche, eine Maske durch Zeichnen von Linien auf einer Leinwand zu erstellen. Wenn ich jedoch mit dem Bild fertig bin, ist es nur das Originalbild. Wenn ich die mask
Bitmap sende, zeigt es wie erwartet und das ursprüngliche Bild ist korrekt. Wie kann ich die Maskierung zwischen den zwei Bitmaps funktionieren lassen?Android Maskierung mit Leinwand Zeichnung
@Override
public void onDraw(Canvas canvas) {
if (lines == null) {
return;
}
Bitmap mask = null;
if(performMask) {
mask = Bitmap.createBitmap((int)getWidth(), (int)getHeight(), Bitmap.Config.RGB_565);
canvas = new Canvas(mask);
}
for (int i = 0; i < lines.size(); i++) {
ArrayList<Point> line = lines.get(i);
for (int j = 1; j < line.size(); j++) {
Point start = line.get(j - 1);
Point end = line.get(j);
canvas.drawLine(start.x, start.y, end.x, end.y, drawingPaint);
}
}
if(performMask) {
performMask = false;
Bitmap result = Bitmap.createBitmap(original.getWidth(), original.getHeight(), Bitmap.Config.ARGB_8888);
Canvas tempCanvas = new Canvas(result);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
tempCanvas.drawBitmap(original, 0, 0, null);
tempCanvas.drawBitmap(mask, 0, 0, paint);
paint.setXfermode(null);
if(maskPerformedListener != null) {
maskPerformedListener.onMaskCompleted(result);
}
}
}