用形状面具绘制文字?

时间:2015-04-09 02:38:20

标签: android mask

我在画布上绘制文字。我想在文本上绘制一个实心的圆形颜色,并且只在它与文本相交的地方绘制圆形。例如:

enter image description here

以及我想做的事情:

enter image description here

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

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

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

2 个答案:

答案 0 :(得分:1)

从谷歌搜索者那里学习本教程...... android-shaders-filters

BitmapShader 可以帮助您

答案 1 :(得分:-1)

您可以在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?