小编Ark*_*mza的帖子

Android PorterDuff.Mode.DST_IN与Bitmap.Config.ALPHA_8组合

我在玩位图遮罩,尝试ALPHA_8PorterDuff.Mode.DST_INPaint 绘制位图遮罩时偶尔发现一个有趣的问题。至少在Android 6.x和5.x上它不起作用。
这是我的示例可绘制代码:

public class MaskedDrawablePorterDuffDstIn extends Drawable {

    private Bitmap mPictureBitmap;
    private Bitmap mMaskBitmap;
    private Bitmap mBufferBitmap;
    private Canvas mBufferCanvas;
    private final Paint mPaintDstIn = new Paint();

    public MaskedDrawablePorterDuffDstIn() {
        mPaintDstIn.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
    }

    @Override
    public void draw(Canvas canvas) {
        if (mPictureBitmap == null || mMaskBitmap == null) {
            return;
        }

        mBufferCanvas.drawBitmap(mPictureBitmap, 0, 0, null);
        mBufferCanvas.drawBitmap(mMaskBitmap, 0, 0, mPaintDstIn);
        canvas.drawBitmap(mBufferBitmap, 0, 0, null);
    }

    @Override
    protected void onBoundsChange(Rect bounds) {
        super.onBoundsChange(bounds);
        final int width = …
Run Code Online (Sandbox Code Playgroud)

android bitmap porter-duff android-canvas

6
推荐指数
0
解决办法
605
查看次数

标签 统计

android ×1

android-canvas ×1

bitmap ×1

porter-duff ×1