SFML Frage zu Resize kombiniert mit SetSubRect
-
Joa, mein Titel nennt schon mein problem
Die Methode CSprite::Render (float frameNr) tut seit dem ich mehrere Auflösungen eingeführt habe nicht mehr das, was sie tun sollvoid CSprite::Render(float fFrameNumber) { Update(); // Ausschnitt der aktuellen Animationsphase berechnen // Spalte berechnen int Column = static_cast<int>(fFrameNumber)%iNumFramesX; // Zeile berechnen int Row = static_cast<int>(fFrameNumber)/iNumFramesX; Sprite.Resize(Image.GetWidth() * g_pFramework->get_AFaktor(), Image.GetHeight() * g_pFramework->get_AFaktor()); Sprite.SetSubRect(sf::IntRect(Column * iFrameWidth, Row * iFrameHeigt, (Column + 1) * iFrameWidth, (Row + 1) * iFrameHeigt)); g_pFramework->Draw(Sprite); }
Die methode g_pFramework->get_AFaktor() gibt mir den Faktor zurück, mit dem ich die aktuelle Größe berrechnen kann ( maxAuflösung/momentaneAuflösung ).
iFramewWidth und Heigt wurden schon "verkleinert" mit get_AFaktor.
Nachdem ich es zeichen lasse kommt aber etwas raus, dass ich nicht beschreiben kann (erst nix und wenn ich über die Position fahre wo er sein müsste (da ändert sich der Frame) kommt ein Übergrößertes Teilstück des Buttons zum Vorrschein.Danke für Hilfe
Niko
-
Is die Frage bzw. der Code unverständlich?
Oder weiß es einfach keiner?
-
greece57 schrieb:
Is die Frage bzw. der Code unverständlich?
Du musst zugeben, dass "Nachdem ich es zeichen lasse kommt aber etwas raus, dass ich nicht beschreiben kann" zu wünschen übrig lässt.
Warum lässt du dir nicht die Resulate der Zwischenberechnungen ausgeben und vergleichst sie mit deinen Erwartungen?
-
Guter Tipp danke!
Zu dem Zeichen
Nunja ich habe eine bildliche Ausgabe in einem Fenster
Bevor der Button angewählt ist (also beim Framenr 0) ist er nicht zu sehen
Wenn ich mit der Maus über seinem Bereich bin, dann sieht man plötlich einen kleinen oberen eckteil vom vollkommen übergroßen (also nicht resizten) button.
Das Teil was man sieht ist ungefähr genau so groß wie das Subrec sein dürfte
-> Es wurde nicht resized
-> Was soll ich tun?^^
-
Problem Gelöst
Falsche Parameter übergabe...^^
Denkfehler meinerseits
Danke fürs lesen!