0

我有一个跨越整个屏幕的位图,它将用作我需要绘制到画布上的 Path 对象的纹理。然后我有一个背景图像,这个纹理路径需要在上面绘制。

我尝试使用 PorterDuff 模式,但似乎没有任何工作正常。我很难弄清楚 PorterDuff 模式的确切运作方式,因为它们似乎都没有按照我一直认为的方式运作

我已经找到了一种使用此测试代码纹理路径的方法:

Paint paint = new Paint();
    //draw the texture
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.texture),0,0,paint);
   //construct the Path with an inverse even-odd fill
Path p = new Path();
p.setFillType(Path.FillType.INVERSE_EVEN_ODD);
p.addCircle(this.getHeight()/2, this.getWidth()/2, 200, Path.Direction.CCW);
   //use CLEAR to remove inverted fill, thus showing only the originally filled section
paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.CLEAR));
   //draw path
canvas.drawPath(p, paint);

但我不知道如何将其放置在背景图像之上。我只是错误地使用了 PorterDuff 模式吗?

4

1 回答 1

0

也许我的问题可以引导您找到解决方案:

paint你的drawPath电话中使用:
油漆风格是什么?
笔画宽度是多少?
什么是笔触/填充颜色?

如果您不使用描边/填充颜色,而是使用纹理,那么对绘画的调用在哪里setShader(使用 a BitmapShader)?

于 2013-02-27T14:43:26.090 回答