使用形状蒙版绘制文本?

Draw text with a shape mask?

我正在 canvas 上绘制文字。我想在文本上画一个实心的颜色圆圈,并且只在与文本相交的地方绘制圆圈。示例:

以及我想做的事情:

我不确定这是否可行,我的绘制代码很简单:

public void onDraw(Canvas canvas) {
    canvas.drawText("Hello", x, y, paint);
    paint.setColor(orange);
    canvas.drawOval(...);
}

我想我需要应用一些掩蔽,但不确定如何开始。

按照 googler 的教程进行操作... android-shaders-filters

BitmapShader 可以帮到你

您可以在 Android 中使用 PorterDuffXfermode 来实现这一点。

如果您使用以下代码,它将正常工作:

Bitmap original = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), 
Bitmap.Config.ARGB_8888); // Created from Canvas
Bitmap mask = 
Bitmap.createBitmap(getContext().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);
tempCanvas.drawBitmap(original, 0, 0, null);
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
tempCanvas.drawBitmap(mask, 0, 0, paint);
paint.setXfermode(null);
canvas.drawBitmap(result, 0, 0, new Paint());

What does PorterDuff.Mode mean in android graphics.What does it do?