2013-02-27 3 views
0

У меня есть растровое изображение, которое охватывает весь экран, который будет функционировать как текстура для объекта 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 неправильно?

ответ

0

Может быть, мои вопросы могут привести вас к решению:

paint используется в вашем drawPath вызова:
Что такое стиль краски?
Какова ширина хода краски?
Каков цвет краски/цвет заливки?

Если вы не используете цвет сток/заливка, а вместо текстуры, где находится вызов для краски setShader (с использованием BitmapShader)?

+0

Стиль заполняется, и это единственная важная деталь, потому что вы никогда не должны видеть цвет заливки или штрихи. Я бы использовал BitmapShader, но я не знаю, как изменить координаты текстуры, чтобы выровнять его так, как я хочу. Есть ли способ, о котором я не знаю? – Taw

Смежные вопросы