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

Auteur Sujet: [Résolu][SFML 2.0]convertCoords  (Lu 3112 fois)

0 Membres et 1 Invité sur ce sujet

Chaore

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
    • E-mail
[Résolu][SFML 2.0]convertCoords
« le: Septembre 09, 2012, 05:55:15 am »
Bonjour,

J'aimerais savoir si convertCoords de sf::RenderWindow est précis ou si il possède une marge d'erreur.  J'ai dessiné un carré à (0,0) sauf que quand je convertis la position de la souris au moment ou il est à sa position, il y a à peu près 30 pixels de différences avec sa position réel sur l'axe des y uniquement (sur du 1680x1050).  Quand je zoom, cette marge d'erreur se réduit et laisse place la position exact une fois rendu très proche du carré.

Si c'est mon code qui accroche, qu'es qui a tendance à créer ce genre de problème?

Merci.
« Modifié: Septembre 09, 2012, 04:47:13 pm par Chaore »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2.0]
« Réponse #1 le: Septembre 09, 2012, 08:58:38 am »
convertCoords est bien entendu exact.

Tu devrais nous montrer un code complet minimal qui reproduit le problème.
Laurent Gomila - SFML developer

Chaore

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
    • E-mail
Re : [SFML 2.0]convertCoords
« Réponse #2 le: Septembre 09, 2012, 03:34:28 pm »
Désolé si y'avait pas de titre, j'ai du accroché un boutton.  Voilà pour le code minimal:

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>



int main(int argc, char *argv[])
{

    sf::RenderWindow Window(sf::VideoMode(1280,860),"TEST");
    Window.setFramerateLimit(60);

    sf::Event event;

    sf::View view;
    view.setCenter(0,0);
    Window.setView(view);

    sf::Vector2i Mouse;
    sf::Vector2f ConvertedMouse;

sf::RectangleShape Rect;
Rect.setSize(sf::Vector2f(20,20));
Rect.setPosition(0,0);
Rect.setFillColor(sf::Color(255,0,0));


while(Window.isOpen())
{
  Window.pollEvent(event);
switch(event.type)
{
         case sf::Event::MouseMoved:
         Mouse=sf::Mouse::getPosition();  // Erreur est ici, il mettre La fenêtre en argument.
         break;

         case sf::Event::MouseWheelMoved:
          if(event.mouseWheel.delta>0) view.zoom(0.91f);
          if(event.mouseWheel.delta<0) view.zoom(1.09f);
          event.mouseWheel.delta=0;
         break;
}

Window.setView(view);
ConvertedMouse=Window.convertCoords(Mouse,view);
std::cout<<ConvertedMouse.x<<std::endl;
std::cout<<ConvertedMouse.y<<std::endl;


   Window.clear(sf::Color(255,255,255));
   Window.draw(Rect);
   Window.display();


}

}



On peut voir que avant le Zoom, la console affiche une position de à peu près (130,130) si le carré alors qu'il est à (0.0).  Il faut un très grand zoom pour effectivement que le coin arrive à 0.0.  Mais il y a de forte chance que se soit une erreur de manipulation de ma part.

Merci de ton aide !

EDIT: Je crois que je gère peut-être très mal le mouvement de la souris en faite...ouais je prend la position relative au bureau, je suis vraiment con desfois.

Résolu maintenant !  Désolé du dérangement !
« Modifié: Septembre 09, 2012, 04:48:45 pm par Chaore »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [Résolu][SFML 2.0]convertCoords
« Réponse #3 le: Septembre 09, 2012, 05:09:39 pm »
En plus tu n'as pas besoin de mixer sf::Mouse et sf::Event, lorsque tu reçois un sf::Event::MouseMoved la position de la souris peut être récupérée dans event.mouseMove.
Laurent Gomila - SFML developer

Chaore

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
    • E-mail
Re : [Résolu][SFML 2.0]convertCoords
« Réponse #4 le: Septembre 09, 2012, 05:23:53 pm »
D'accord, merci !

 

anything