Android – покрасьте растровое изображение в определенное место на холсте

Ладно, может быть, я что-то упустил, но я застрял часами. Я создаю приложение, в котором пользователь рисует размерную линию над изображением. Теперь я хочу также нарисовать несколько точек выбора, которые показывают, что линия выбрана. Эти точки представляют собой конкретное растровое изображение, которое должно быть на конце строки (после стрелки) и поворачиваться в соответствии со стрелкой. Я создал класс DrawSelectionPoint, который расширяет представление, и я могу повернуть растровое изображение примерно так:

selectionPoint = BitmapFactory.decodeResource(context.getResources(), R.drawable.selectionpoint); Matrix matrix = new Matrix(); matrix.postRotate((float)Math.toDegrees(angle)); canvas.drawBitmap(selectionPoint, matrix, null); 

(Где угол – угол линии), таким образом мой растровый рисунок поворачивается так, как я его хочу, но он окрашен в точку 0,0 (вверху слева от экрана).

Если я использую что-то вроде

 canvas.save(); canvas.rotate(); canvas.drawBitmap(selectionPoint, x, y, null); canvas.restore(); 

То я нахожу слишком сложным рисовать растровое изображение в точном месте, которое я хочу (так как я рисую на повернутом холсте, который потом поворачиваюсь назад). Я попробовал некоторые преобразования евклидова вращения, но мне не повезло.

Есть ли способ применить поворот матрицы, а также указать точки, в которых мне нужен растровый рисунок? Заранее спасибо!

Предположим, вы хотите нарисовать растровое изображение, где центр растрового изображения будет находиться в координатах холста (px, py). Имейте переменную-член

 Matrix matrix = new Matrix(); 

И в вашем onDraw:

 matrix.reset(); matrix.postTranslate(-bitmap.getWidth() / 2, -bitmap.getHeight() / 2); // Centers image matrix.postRotate(angle); matrix.postTranslate(px, py); canvas.drawBitmap(bitmap, matrix, null);