У меня есть растровое изображение, которое охватывает весь экран, который будет функционировать как текстура для объекта Path, который мне нужно рисовать на моем холсте. Затем у меня есть фоновое изображение, которое нужно нарисовать поверх этого текстурированного пути.Android - Применить текстуру растрового изображения к процедурам рисования API
Я пробовал использовать режимы PorterDuff, но ничего не работало правильно. Мне было трудно понять, как действуют режимы PorterDuff, потому что никто из них, похоже, не действует так, как I always thought they were supposed to function.
Я придумал способ текстурирования путь с этим тестового кода:
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 неправильно?
Стиль заполняется, и это единственная важная деталь, потому что вы никогда не должны видеть цвет заливки или штрихи. Я бы использовал BitmapShader, но я не знаю, как изменить координаты текстуры, чтобы выровнять его так, как я хочу. Есть ли способ, о котором я не знаю? – Taw