Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: [Résolu][SFML 2.0]convertCoords  (Read 3717 times)

0 Members and 1 Guest are viewing this topic.

Chaore

  • Newbie
  • *
  • Posts: 41
    • View Profile
    • Email
[Résolu][SFML 2.0]convertCoords
« on: September 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.
« Last Edit: September 09, 2012, 04:47:13 pm by Chaore »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : [SFML 2.0]
« Reply #1 on: September 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
  • *
  • Posts: 41
    • View Profile
    • Email
Re : [SFML 2.0]convertCoords
« Reply #2 on: September 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 !
« Last Edit: September 09, 2012, 04:48:45 pm by Chaore »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : [Résolu][SFML 2.0]convertCoords
« Reply #3 on: September 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
  • *
  • Posts: 41
    • View Profile
    • Email
Re : [Résolu][SFML 2.0]convertCoords
« Reply #4 on: September 09, 2012, 05:23:53 pm »
D'accord, merci !

 

anything