Historique des modifications - Message

Message #4012

Sujet: Plusieurs questions


Type Date Auteur Contenu
Création du message 18-05-2008 19:38:43 nikska
Bon ben je vais me répondre à moi même comme personne n'a trouvé:p

2. Comment aligner un élément GUI (exemple une IGUIWindow) en bas à droite ?

Perso j'ai fait une classe avec des methodes qui donnent :


//je précise au cas où les includes
#include <irrlicht.h>
#include <IGUIElement.h>
#include "Aligne.h"


//et le namespace
using namespace irr;


// aligne un IGUIElement en bas à droite (sans modifier sa taille)
void Aligne::aligneLowerRight(gui::IGUIWindow* Element)
{
    // on récupère le IGUIElement parent pour connaître la position max
    gui::IGUIElement* elementParent = Element->getParent();

    s32 pointXmax = elementParent->getRelativePosition().getWidth();
    s32 pointXmin = pointXmax - Element->getRelativePosition().getWidth() ;   //on récupère la largeur
    s32 pointYmax = elementParent->getRelativePosition().getHeight();
    s32 pointYmin = pointYmax - Element->getRelativePosition().getHeight() ;   //on récupère la hauteur
    core::rect<s32> tailleRectSceneFinal (pointXmin, pointYmin, pointXmax, pointYmax); 

    Element->setRelativePosition(tailleRectSceneFinal); //on repositionne l'élément GUI

}

Pour aligner en bas de la fenêtre :

//aligne un IGUIElement en bas de la fenêtre (sans modifier sa taille)
void Aligne::aligneLower(gui::IGUIWindow* Element)
{

    // on récupere le IGUIElement parent pour connaitre la position max
    gui::IGUIElement* elementParent = Element->getParent();

    s32 pointXmax = Element->getAbsolutePosition().getWidth() ;
    s32 pointXmin = Element->getAbsolutePosition().UpperLeftCorner.X;
    s32 pointYmax = elementParent->getAbsolutePosition().getHeight();
    s32 pointYmin = pointYmax - Element->getAbsolutePosition().getHeight() ;

    core::rect<s32> tailleRectSceneFinal (pointXmin, pointYmin, pointXmax, pointYmax);

    Element->setRelativePosition(tailleRectSceneFinal);
}

Et pour faire appel à ces methodes c'est tout simple :

//l'include de la nouvelle class en plus des autres
#include "Aligne.h"

    Aligne monAligne;
    //monAligne.aligneLeft( maWindow);
    monAligne.aligneLowerRight( maWindow);

Attention cependant il y a peut être une petite erreur au niveau des methodes getAbsolutePosition() et getRelativePosition(). Elles semblent donner le même resultat mais il doit y avoir une différence que je n'ai pas encore trouvé !

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
152 invités en ligne
membre en ligne: -
RSS Feed