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

Auteur Sujet: [Résolu] GUI pour SFML  (Lu 9065 fois)

0 Membres et 1 Invité sur ce sujet

Alexion

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
    • Page perso
[Résolu] GUI pour SFML
« le: Juin 11, 2012, 09:03:41 pm »
Bonjour,

Je souhaiterais faire des boutons entièrement personnalisés (avec hover, etc) , j'ai essayé avec SFML mais c'est pas la gloire et c'est vraiment très hardcore. Je me demandais si je pourrais le faire avec SFGUI ou bien Qt ( avec lequel j'ai une bonne maitrise).

Merci de votre aide.

A bientôt
« Modifié: Juin 12, 2012, 07:36:36 pm par Alexion »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : GUI pour SFML
« Réponse #1 le: Juin 11, 2012, 09:33:32 pm »
Qt non, il te faut un truc qui dessine sur une fenêtre SFML, donc soit avec SFML soit avec OpenGL.

SFGUI, très certainement oui.

Mais très honnêtement, s'il te faut juste des boutons c'est pas très hardcore. Deux sprites, une détection de la souris et c'est bon.
Laurent Gomila - SFML developer

Alexion

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
    • Page perso
Re : GUI pour SFML
« Réponse #2 le: Juin 12, 2012, 06:26:28 am »
Merci de ta réponse,

Ça fait plusieurs jour que je suis sur un bouton et le résultat est médiocre.
Tu peux aller jeter un œil ici . Il y a des bugs graphiques lors du survol de la souris sur le bouton Quit.

Merci de ton aide.

pierreyoda

  • Full Member
  • ***
  • Messages: 186
    • Voir le profil
    • http://pierreyoda.pagesperso-orange.fr/
Re : GUI pour SFML
« Réponse #3 le: Juin 12, 2012, 03:36:34 pm »
Ca c'est juste la "collision" avec la souris qui déconne, jette un coup d'oeil du côté de sf::Rect<T>::contains(x, y)   ;) (cf. doc)
Projects:
- Open Rodent's Revenge (rewriting in progress)
- Open Advanced War (paused)

Alexion

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
    • Page perso
Re : GUI pour SFML
« Réponse #4 le: Juin 12, 2012, 03:47:15 pm »
Salut,
J'utilise déjà les IntRect, donc il faut que je fasse des conditions avec la fonction contains ?

Merci de ton aide.

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : GUI pour SFML
« Réponse #5 le: Juin 12, 2012, 07:32:02 pm »
C'est le b.a.-ba.

// test :
si contains() = vrai alors dedans = vrai sinon dedans = faux.

// affichage :
si dedans = vrai alors dessine dessin_survol
si dedans = faux alors dessine dessin_normal


Alexion

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
    • Page perso
Re : GUI pour SFML
« Réponse #6 le: Juin 12, 2012, 07:35:46 pm »
C'est justement ce que je faisais mais sans les contains :

 if(mouseX < 150 && mouseY < 60 && !hover)
                    {
                        hover = true;
                    }
                    else if (hover)
                    {
                        hover = false;
                    }

 

Puis après le switch

        if(!hover)
            app.draw(spriteQuit1);
        if(hover)
            app.draw(spriteQuit2);
 

Je vais donc essayer avec les contains.

Merci de votre aide et j'espère que la doc de la 2.0 se développera rapidement  ;)


Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : [Résolu] GUI pour SFML
« Réponse #7 le: Juin 12, 2012, 08:44:30 pm »
Citer
Merci de votre aide et j'espère que la doc de la 2.0 se développera rapidement

La doc est complète : http://www.sfml-dev.org/documentation/2.0/classes.php

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [Résolu] GUI pour SFML
« Réponse #8 le: Juin 12, 2012, 10:09:51 pm »
Je pense qu'il parle des tutoriels.
Laurent Gomila - SFML developer

Alexion

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
    • Page perso
Re : [Résolu] GUI pour SFML
« Réponse #9 le: Juin 13, 2012, 06:25:23 am »
Oui, je parlais des tutos.

Macrob

  • Jr. Member
  • **
  • Messages: 52
    • Voir le profil
Re : [Résolu] GUI pour SFML
« Réponse #10 le: Juin 21, 2012, 12:19:41 pm »
Salut,

Même si le sujet est résolu, voici la méthode de hitTest que j'utilise :

bool hitTest(sf::FloatRect rect, sf::Vector2i mouse)
{
    if(mouse.x > rect.left)
    {
        if(mouse.x < rect.left + rect.width)
        {
            if(mouse.y > rect.top)
            {
                if(mouse.y < rect.top + rect.height)
                    return true;
                else
                    return false;
            }
            else
                return false;
        }
        else
            return false;
    }
    else
        return false;
}

Elle te sera peut être utile !  :)
« Modifié: Juin 21, 2012, 12:25:22 pm par Macrob »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [Résolu] GUI pour SFML
« Réponse #11 le: Juin 21, 2012, 12:50:30 pm »
Deux choses :

1. Beaucoup de lignes de code pour pas grand chose
bool hitTest(sf::FloatRect rect, sf::Vector2i mouse)
{
    return (mouse.x > rect.left) && (mouse.x < rect.left + rect.width) &&
           (mouse.y > rect.top)  && (mouse.y < rect.top + rect.height);
}

2. C'est très exactement ce que fait la fonction contains
if (rect.contains(mouse))
{
    ...
}

Note que FloatRect et Vector2i ne sont pas directement compatibles, mais de toute façon le fait que tu mixes les deux est une indication que tu fais mal quelque chose -- tu compares deux choses qui sont dans deux espaces différents (pixels pour les int, unités de la scène pour les float). Je pense que ce qu'il te manque, c'est un appel à window.convertCoords(mouse) pour passer des pixels à la scène.
Laurent Gomila - SFML developer

Macrob

  • Jr. Member
  • **
  • Messages: 52
    • Voir le profil
Re : [Résolu] GUI pour SFML
« Réponse #12 le: Juin 21, 2012, 05:42:58 pm »
Merci pour l'optimisation et la remarque  :)

Bartours

  • Full Member
  • ***
  • Messages: 136
    • Voir le profil
Re : [Résolu] GUI pour SFML
« Réponse #13 le: Juin 29, 2012, 09:58:23 pm »
Hello,

Je me permet de revenir sur le post initial et de l'idée de le faire avec Qt.

A l'époque j'avais testé un code donné sur le forum qui permettait d'intégrer un bouton Qt dans une fenêtre SFML.

Voici le lien :

http://www.sfml-dev.org/old-forum-fr/viewtopic.php?t=3641&postdays=0&postorder=asc&start=30

Entre temps, une première version de Qt5 (alpha) est sortie et je suis curieux de savoir quelles sont les possibilités concernant l'intégration avec SFML !

http://qt-project.org/wiki/Qt_5.0

 

anything