Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: scipion60 le Avril 18, 2012, 03:13:21 pm

Titre: [SFML 2.0]sf::View
Posté par: scipion60 le Avril 18, 2012, 03:13:21 pm
Bonjour,

je souhaite utiliser une view afin de pour definir une carte en arriere plan et pourvoir la placer soit grâce à la souris ou au clavier.

j'ai suivis les anciens tutoriel mais je me retrouve avec ma carte décalé par rapport  :-[ au lieu d'être centre lors du lancement de la carte. Es ce que j'oublie d’exécuter une commande afin de recentrer la vue? ou me manque t'il des opérations?


#include <cstdlib>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include<SFML/System.hpp>

using namespace std;


int main()
{
    // Create the main window
    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Events");
    sf::Clock clock;
   
    float Offset;
    // Get a reference to the input manager associated to our window, and store it for later use
  //  const sf::InputStream& Input = App.;
   
   
    sf::Texture carte;
    carte.loadFromFile("img\\map.png");
     
    sf::Sprite sprite(carte);
   
     
       
    /* Create a view with the same size as the window, located somewhere in the center of the background
    */
    sf::Vector2f Center(0, 0);
    sf::Vector2f HalfSize(800, 600);
    sf::View View(Center, HalfSize);   
   // sf::View View(sf::FloatRect(0, 0,  800, 600));
       
   // View.setSize( 800, 600) ;   
    // Start main loop
    while (App.isOpen())
{

// Process events
sf::Event Event;
while (App.pollEvent(Event))
{

         if (Event.type == sf::Event::KeyReleased)
            std::cout << "shortcut pressed " << Event.key.code << std::endl;
         
         
            // Close window : exit
            if (Event.type == sf::Event::Closed)
                App.close();

            // Escape key : exit
            if ((Event.type == sf::Event::KeyPressed) && (Event.key.code == sf::Keyboard::Escape))
                App.close();
         
}
               
             
                       
             
               
         
          // Set the view
        App.clear();
       
        App.setView(View);
       
        App.draw(sprite);
        // Reset to the default view to draw the interface
        App.setView(App.getDefaultView());

       
              //  App.clear();
           
App.display();
}

    return EXIT_SUCCESS;
}







Pour info ma carte fait 928x1242

Merci d'avance pour toute aide
Titre: Re : [SFML 2.0]sf::View
Posté par: Bigz le Avril 18, 2012, 03:23:22 pm
Si je dis pas de bêtise, le fait d'avoir un centre en 0,0, sachant que ton sprite est positionné en 0,0, devrait te donner une vue centrée sur le coin supérieur gauche de ton image. Est-ce le cas ?

Si tu veux que ta vue soit centrée par rapport à ton image, il faut que le centre de ta caméra soit à la même position que le centre de ton image.
Titre: Re : [SFML 2.0]sf::View
Posté par: scipion60 le Avril 18, 2012, 04:03:43 pm
l'action

sf::Vector2f Center(400, 300);



m'a centré ma carte mais il me reste des bordures noir autour de l'image : :-\

Faut - il les garder si on veut plus tard crée une interface graphique?