相关疑难解决方法(0)

在画布上绘图 - PorterDuff.Mode.CLEAR绘制黑色!为什么?

我正在尝试创建一个简单的自定义视图:有一个由弧路径显示的位图 - 从0deg到360deg.学位正在随着一些FPS而变化.

所以我使用重写onDraw()方法创建了一个自定义视图:

@Override
protected void onDraw(Canvas canvas) {

    canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
    arcPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
    canvas.drawArc(arcRectF, -90, currentAngleSweep, true, arcPaint);
    arcPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
    canvas.drawBitmap(bitmap, circleSourceRect, circleDestRect, arcPaint);
}
Run Code Online (Sandbox Code Playgroud)

arcPaint 初始化如下:

arcPaint = new Paint();
arcPaint.setAntiAlias(true);
arcPaint.setColor(Color.RED); // Color doesn't matter
Run Code Online (Sandbox Code Playgroud)

现在,一切都很棒,但是...整个视图中的背景是黑色的.

如果我设置canvas.drawColor(..., PorterDuff.Mode.DST)并省略canvas.drawBitmap()- 在透明背景上正确绘制圆弧.

我的问题是 - 如何设置PorterDuff模式以使其与透明度一起工作?

当然bitmap是具有alpha通道的32位PNG.

android drawing canvas porter-duff

21
推荐指数
2
解决办法
2万
查看次数

标签 统计

android ×1

canvas ×1

drawing ×1

porter-duff ×1