2016-06-29 19 views
0

Ich arbeite gerade an einem Projekt und versuche ein Bild zu skalieren. Ich habe eine Hitbox, die durch den folgenden Code bestimmt wird.Skalieren eines Bildes mit einem Vector2 kleiner als

public Rectangle bound 
    { 
     get 
     { 
      return new Rectangle((int)position.X, (int)position.Y, 
       texture.Width * (int)scale.X, 
       texture.Height * (int)scale.Y); 
     } 
    } 

Dies funktioniert, vorausgesetzt, die Skala ist entweder eins oder größer. Wenn ich jedoch einen Skalierungswert eingeben, der kleiner als 1 ist, funktionieren Kollisionen nicht und die Funktion Console.WriteLine() gibt {X: 300 Y: 300 Width: 0 Height: 0} zurück. Gibt es etwas, was ich falsch mache?

+1

Casting auf 'int' schneidet ab, also' 0.9' geht auf '0'. Versuchen Sie, * nach * zu multiplizieren statt: '(int) (texture.Width * scale.X)' – Blorgbeard

+0

Ich habe es herausgefunden, bevor ich Ihren Kommentar gesehen habe. Vielen Dank. –

Antwort

1

Nun, ich fühle mich nicht albern.

public Rectangle bound 
    { 
     get 
     { 
      return texture == null ? new Rectangle(0,0,0,0) : new Rectangle((int)position.X, (int)position.Y, 
       (int)(texture.Width * scale.X), (int)(texture.Height * scale.Y)); 
     } 
    } 

Offenbar, wenn die Abmessungen Ihres Rechtecks ​​ein Float sind, gibt es eine Null zurück.