Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [SFML 2.0]sf::View  (Lu 3265 fois)

0 Membres et 1 Invité sur ce sujet

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
[SFML 2.0]sf::View
« 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

Bigz

  • Full Member
  • ***
  • Messages: 154
    • Voir le profil
    • Bigz.fr
Re : [SFML 2.0]sf::View
« Réponse #1 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.

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : [SFML 2.0]sf::View
« Réponse #2 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?