#include <SFML\Graphics.hpp>
int main()
{
sf::RenderWindow mainWnd(sf::VideoMode(800, 600, 32), "Przemieszczanie, skalowanie i obracanie sprajtów");
sf::Texture qTexture;
qTexture.loadFromFile("[5] img/q.png");
sf::Sprite qSprite;
qSprite.setTexture(qTexture);
// ustawienie pozycji obiektu
qSprite.setPosition(200, 100); // lub qSprite.sePosition(sf::Vector2f(200, 100));
// ustawienie kąta obrotu qSprite(obrazka q.png) o 60 stopni
qSprite.setRotation(60);
// ustawienie skali obrazka
qSprite.setScale(1, 1); // szerokośc bez zmian, wysokośc jest 2 razy większa
qSprite.setScale(sf::Vector2f(0.5, 0.5)); // szerokość i wysokość są 2 razy mniejsze
// ustawienie środka obiektu(obrazka); domyślnie lewy górny róg
qSprite.setOrigin(64, 64); // lub qSprite.setOrigin(sf::Vector2f(64, 64));
while(mainWnd.isOpen())
{
sf::Event zdarzenie;
while(mainWnd.pollEvent(zdarzenie))
{
// zamknięcie okna po prez przycisk
if(zdarzenie.type == sf::Event::Closed)
mainWnd.close();
// zamknięcie okna przez ALT + F4
if(sf::Keyboard::isKeyPressed(sf::Keyboard::LAlt) && sf::Keyboard::isKeyPressed(sf::Keyboard::F4))
mainWnd.close();
// zamknięcie okna przez ESC
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
mainWnd.close();
// przesuwanie obrazu w prawo
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
// pobranie pozycji sprajta(q.png)
sf::Vector2f qPosition = qSprite.getPosition();
// można przesuwać, tylko do osiągnięcia punktu 680
// nie wychodzimy w tedy poza scenę
if(qPosition.x <= 660)
// przesunięcie sprajta o 10 w poziomie(x) i 0 w pionie(y)
// aktualna pozycja X + 10; aktualna pozycja Y + 0;
qSprite.move(10, 0); // lub qSprite.move(sf::Vector2f(10, 0));
}
// przesuwanie obrazu w lewo
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
if(qSprite.getPosition().x > 128)
qSprite.move(-10, 0);
}
// przesuwanie obrazu na dół
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
sf::Vector2f qPosition = qSprite.getPosition();
if(qPosition.y < 430)
qSprite.move(0, 10);
}
// przesuwanie obrazu w górę
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
if(qSprite.getPosition().y > 10)
qSprite.move(0, -10);
}
// obrót obrazka w lewo
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
// obracanie obrazkiem
qSprite.rotate(10); // lub qSprite.setRotation(qSprite.getRotation() + 10);
// obracanie obrazka w prawo
if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
qSprite.rotate(-10);
// czy pokręcono kółkiem myszy
if(zdarzenie.type == sf::Event::MouseWheelMoved)
{
// czy do przodu(Wartość dodatnia)
if(zdarzenie.mouseWheel.delta > 0)
// zwiększenie rozmiaru obrazka 2x(wysokośc * 2, szerokośc *2)
qSprite.scale(2, 2); // lub qSprite.scale(sf::Vector2f(0.5, 0.5));
// lub qSprite.setScale(qSprite.getScale().x * 2, qSprite.getScale().y * 3);
else
// zmniejszenie rozmiaru obrazka 2x(wysokość * 0.5, szerokość * 0.5);
qSprite.scale(0.5, 0.5);
}
}
mainWnd.clear();
mainWnd.draw(qSprite);
mainWnd.display();
}
return 0;
}
Kod stary jak świat, ale powinien działać :)