Я пытаюсь нарисовать треугольную часть растрового изображения. Я уже знаю, как рисовать заполненный треугольник, используя путь, и я уже знаю, что ответ может включать в себя что-то, называемое 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);
Единственная оставшаяся проблема заключается в том, что растровое изображение, из которого нарисован треугольник коренится в координатах экрана. Это означает, что когда анимированный треугольник (т. Е. Рисуется в разных точках вокруг экрана), он имеет вид окна, позволяющего видеть статическое изображение снизу. Я действительно хочу, чтобы битмап был привязан к треугольнику, так что треугольник выглядит как сплошной объект, движущийся вокруг. Любая идея, как это исправить?
Я был очень путают, что canvas.translate (0, 0) не отменяет перевод! .. Мне нужен canvas.translate (-x1, -y1); .. но все работает сейчас. – Mick
вы также можете использовать canvas.save() canvas.translate (x, y) .... и canvas.restore() восстановление восстанавливает состояние преобразования до последнего сохранения. – Christian