Sto tentando di mostrare un'immagine, che può essere ingrandita e ridotta e che ruota con una lettura della bussola. Con il codice qui sotto, tutte e tre le azioni funzionano, ma si influenzano a vicenda.Rotazione, conversione e ridimensionamento simultaneo di bitmap su tela Android
Ecco quello che voglio raggiungere:
1. Ruotare intorno al centro dello schermo
2. Scala lasciando la stessa parte del quadro nel centro
3. Pan nel punto desiderato nella foto
Ecco ciò che sta realmente accadendo con il codice qui sotto:
1. la rotazione funziona come previsto, intorno al centro dello schermo
2. opere Scaling, ma scale intorno al centro dell'immagine
3. Traduzione funziona solo come previsto se angle
è zero, altrimenti si muove in una direzione sbagliata
// the center of the view port
float centerX = screen.right/2;
float centerY = screen.bottom/2;
Matrix m = new Matrix();
m.preRotate(angle, centerX, centerY);
m.preScale(mScaleFactor, mScaleFactor, centerX, centerY);
// scaling the amount of translation,
// rotating the translation here gave crazy results
float x = mPosX/mScaleFactor;
float y = mPosY/mScaleFactor;
m.preTranslate(x, y);
canvas.drawBitmap(pic, m, null);
Se traduco prima, e poi ruotare, la traduzione funziona come previsto, ma la rotazione non è attorno al centro di la porta di visualizzazione più.
Come posso applicare tutte e tre le trasformazioni, senza che si influenzino a vicenda?
Ruotare la traduzione sembra solo compensare la rotazione, ma ho anche la sensazione che questo è ciò che io d. Le matrici Android sono 3x3, quindi immagino che siano già trasformazioni affini? – modemuser
Quindi magari provare ad impostare direttamente la matrice invece di usare quei metodi pre-rotazione, pre-scala? Quindi la tua matrice dovrebbe essere qualcosa come la modifica nel post sopra – Dan
Con questa matrice, il panning funziona, ma il ridimensionamento ruota anche l'immagine, la rotazione ridimensiona anche l'immagine e la rotazione avviene attorno a un angolo dell'immagine. È come whac-a-mole, ma grazie per il tuo contributo. – modemuser