Я хочу центрировать значки на виде стикера, когда стикер поворачивается, но его положение искажено, как на рисунке, как я могу это исправить?
введите описание изображения здесь
Это то, что я хочу сделать;
введите описание изображения здесь
Код, который я использую;
getStickerPoints(handlingSticker, bitmapPoints);
float x1 = bitmapPoints[0];
float y1 = bitmapPoints[1];
float x2 = bitmapPoints[2];
float y2 = bitmapPoints[3];
float x3 = bitmapPoints[4];
float y3 = bitmapPoints[5];
float x4 = bitmapPoints[6];
float y4 = bitmapPoints[7];
if (showBorder) {
canvas.drawLine(x1, y1, x2, y2, borderPaint);
canvas.drawLine(x1, y1, x3, y3, borderPaint);
canvas.drawLine(x2, y2, x4, y4, borderPaint);
canvas.drawLine(x4, y4, x3, y3, borderPaint);
}
if (showIcons) {
float rotation = calculateRotation(x4, y4, x3, y3);
if (handlingSticker.isDrawableSticker()) {
for (int i = 0; i < drawable_sticker_icons.size(); i++) {
BitmapStickerIcon icon = drawable_sticker_icons.get(i);
switch (icon.getPosition()) {
case BitmapStickerIcon.LEFT_TOP:
configIconMatrix(icon, x1, y1, rotation);
break;
case BitmapStickerIcon.RIGHT_TOP:
configIconMatrix(icon, x2, y2, rotation);
break;
case BitmapStickerIcon.LEFT_BOTTOM:
configIconMatrix(icon, x3, y3, rotation);
break;
case BitmapStickerIcon.RIGHT_BOTOM:
configIconMatrix(icon, x4, y4, rotation);
break;
case BitmapStickerIcon.TOP_CENTER:
configIconMatrix(icon, (x1 + x2) / 2, y2, rotation);
break;
case BitmapStickerIcon.BOTTOM_CENTER:
configIconMatrix(icon, (x3 + x4) / 2, y4, rotation);
break;
case BitmapStickerIcon.LEFT_CENTER:
configIconMatrix(icon, x3, (y1 + y3) / 2, rotation);
break;
case BitmapStickerIcon.RIGHT_CENTER:
configIconMatrix(icon, x4, (y2 + y4) / 2, rotation);
break;
}
icon.draw(canvas, borderPaint);
}
}