2012-08-07 6 views
7

Voglio ridimensionare una tela con una bitmap disegnata su di essa. Sono in grado di ridimensionare la tela ma la bitmap disegnata su di essa si sposta in alto a sinistra, rispettivamente in basso a destra.Ridimensionamento dell'area di lavoro e centro di conservazione

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.translate(mPosX, mPosY); 
    canvas.scale(mScaleFactor, mScaleFactor); 

    //draw bitmap 
} 

Negli ultimi giorni ho provato molti approcci diversi dalla manipolazione delle coordinate di traduzione ai punti di rotazione per il ridimensionamento. Ma niente ha funzionato per me. Sono abbastanza sicuro che ci deve essere una soluzione facile per il mio problema.

Grazie in anticipo

+0

Come esattamente si desidera che la bitmap venga ridimensionata? Cosa significa questo: "ma la bitmap disegnata su di esso si sposta in alto a sinistra, rispettivamente in basso a destra." – you786

+0

Diciamo che ho un cerchio rosso al centro dello schermo. Se eseguo lo zoom, desidero avere un cerchio rosso più grande al centro dello schermo. In questo momento ottengo un cerchio rosso più grande nell'angolo in basso a destra dello schermo –

risposta

13

Come lei ha ricordato, il punto di rotazione è il modo corretto di fare questo:

canvas.scale(2,2, redCircle.x, redCircle.y); 

funzionerà. Non c'è bisogno di traduzioni extra.

+0

Il cerchio rosso era solo un esempio. In effetti ci sono molte immagini bitmap disegnate sulla tela. Voglio ingrandire ciò che è sempre al centro dello schermo. –

+0

Quindi il punto di rotazione dovrebbe essere il centro dello schermo. Se lo hai già provato, devi aver usato valori errati per centerX e centerY. – you786

+0

Ok. Ora posso zoomare al centro dello schermo. Ma ora lo scorrimento sulla tela è molto lento 'canvas.scale (mScaleFactor, mScaleFactor, getWidth()/2, getHeight()/2); \t \t \t canvas.translate (mPosX, mPosY); ' –

Problemi correlati