我在画布上绘制文字。我想在文本上绘制一个实心的圆形颜色,并且只在它与文本相交的地方绘制圆形。例如:
以及我想做的事情:
我不确定这是否可行,我的抽奖代码很简单:
public void onDraw(Canvas canvas) {
canvas.drawText("Hello", x, y, paint);
paint.setColor(orange);
canvas.drawOval(...);
}
我想我需要应用一些掩蔽,但不知道如何开始。
答案 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?