Android:如何使用Canvas屏蔽位图?

时间:2018-03-25 12:45:46

标签: android canvas bitmap

我在Android应用程序上获取Bitmap Parse

final WeakReference<ImageView> weakImageView = new WeakReference<>(imageViewToMask);
fetchFromParse(getContext(), new Success() {
        @Override
        public void success(Bitmap image) {
            if (weakImageView.get() != null) {
                // Here how to make this image a MaskDrawable to mask it?
                // MaskedDrawable d = new MaskedDrawable(bitmap, context, [canvas here]?)                
                // weakImageView.get().setImageDrawable(d);
                weakImageView.get().setImageDrawable(image);
            }
        }
});

现在我想用另一个图像掩盖这个位图,我找到了这个答案in this thread

public class MaskedDrawable extends Drawable {

    public void draw(Bitmap original, Context context, Canvas canvas) {
            Bitmap mask = BitmapFactory.decodeResource(context.getResources(), R.drawable.mask_image);
            Bitmap result = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), Config.ARGB_8888);
            Canvas tempCanvas = new Canvas(result);
            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
            paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
            tempCanvas.drawBitmap(original, 0, 0, null);
            tempCanvas.drawBitmap(mask, 0, 0, paint);
            paint.setXfermode(null);

            // How do I create this canvas user here?
            canvas.drawBitmap(result, 0, 0, new Paint());
    }

}

我已经拥有原始bitmapcontext对象,但我不知道如何使用canvas。怎么办?

感谢您的帮助!

0 个答案:

没有答案