2012-03-07 2 views
0

Я пытаюсь нарисовать треугольную часть растрового изображения. Я уже знаю, как рисовать заполненный треугольник, используя путь, и я уже знаю, что ответ может включать в себя что-то, называемое BitmapShader, но я не могу найти четкую документацию или примеры, чтобы собрать все это вместе.Как нарисовать треугольную часть растрового изображения

EDIT: После долгих перелетов и экспериментов, я сейчас почти там. Мой код выглядит следующим образом:

Paint paint; 
Path path = new Path(); 
BitmapShader bms = new BitmapShader(shrub_bitmap,TileMode.REPEAT ,TileMode.REPEAT ); 
paint.setStyle(Style.FILL); 
paint.setShader(bms); 
path.reset(); 
path.setFillType(Path.FillType.EVEN_ODD); 
path.moveTo(x1,y1); 
path.lineTo(x2,y2); 
path.lineTo(x3,y3); 
path.close(); 
canvas.drawPath(path, paint); 
paint.setShader(null); 

Единственная оставшаяся проблема заключается в том, что растровое изображение, из которого нарисован треугольник коренится в координатах экрана. Это означает, что когда анимированный треугольник (т. Е. Рисуется в разных точках вокруг экрана), он имеет вид окна, позволяющего видеть статическое изображение снизу. Я действительно хочу, чтобы битмап был привязан к треугольнику, так что треугольник выглядит как сплошной объект, движущийся вокруг. Любая идея, как это исправить?

ответ

1

на ваш второй вопрос:

попробовать с помощью canvas.translate (x1, y1) и MoveTo (0, 0), LineTo (x2 - x1, y2 - y1) ...

+0

Я был очень путают, что canvas.translate (0, 0) не отменяет перевод! .. Мне нужен canvas.translate (-x1, -y1); .. но все работает сейчас. – Mick

+1

вы также можете использовать canvas.save() canvas.translate (x, y) .... и canvas.restore() восстановление восстанавливает состояние преобразования до последнего сохранения. – Christian

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