2011-09-18 12 views
5

Ho una funzione che accetta una bitmap senza interruzioni e la scorre sullo schermo in qualsiasi direzione utilizzando le coordinate del mondo. Ci sono 4 pareggi (l'area di gioco è più piccola della dimensione totale della bitmap. Quindi al massimo vedrai 4 copie della bitmap, solo sezioni diverse disegnate per mantenere l'effetto continuo). Quello che voglio sapere è, dovrei applicare le modifiche ai limiti del rect in modo tale che si limitino a omettere le parti che dovrebbe sullo schermo? O dovrei lasciarlo gestire da Android? E se lo faccio da solo, come dovrei gestirlo? Il mondo coordina e traduce davvero mi confonde, per quanto riguarda la matematica. :/Devo fare affidamento su Android per scartare i disegni fuori schermo?

Ecco il codice.

public void draw(Canvas canvas){ 

oCoords.x=(int) fX; 
oCoords.y=(int) fY; 

oTopLeft = gridContainingPoint(oCoords); 
oTopRight.x = gridContainingPoint(oCoords).x + iWidth; 
oTopRight.y = gridContainingPoint(oCoords).y; 
oBottomLeft.x = gridContainingPoint(oCoords).x; 
oBottomLeft.y = gridContainingPoint(oCoords).y + iHeight; 
oBottomRight.x = gridContainingPoint(oCoords).x + iWidth; 
oBottomRight.y = gridContainingPoint(oCoords).y + iHeight; 

canvas.save(); 
canvas.translate(-fX, -fY); 
oCloud.setBounds(oTopLeft.x, oTopLeft.y, oTopLeft.x + this.iImageWidth, oTopLeft.y + this.iImageHeight); 
oCloud.draw(canvas); 
oCloud.setBounds(oTopLeft.x + this.iImageWidth, oTopLeft.y, oTopLeft.x + (this.iImageWidth * 2), oTopLeft.y + this.iImageHeight); 
oCloud.draw(canvas); 
oCloud.setBounds(oTopLeft.x, oTopLeft.y + this.iImageHeight, oTopLeft.x + this.iImageWidth, oTopLeft.y + (this.iImageHeight * 2)); 
oCloud.draw(canvas); 
oCloud.setBounds(oTopLeft.x + this.iImageWidth, oTopLeft.y + this.iImageHeight, oTopLeft.x + (this.iImageWidth * 2),oTopLeft.y + (this.iImageHeight * 2)); 
oCloud.draw(canvas); 
canvas.restore(); 
} 

risposta

2

io non sono sicuro di capire i dettagli del codice pezzo che hai postato, ma se stai chiedendo fa clip di Android pareggi per lo schermo limiti automaticamente la risposta è sì. Quindi non devi impostare dei limiti quando disegni la tua bitmap a meno che tu non voglia disegnarne una porzione più piccola dello schermo.

Problemi correlati