Bonjour,
J'utilise Irrlicht depuis quelque mois, et j'entreprends actuellement de crée une gui, histoire de remplacer la toute moche et peu développée d'Irrlicht, par une autre, personnalisée et plus adapté à mes besoins. Je n'utilise donc que la classe IGUIImage, pour faire apparaitre, disparaitre, bouger, mes éléments gui. Mes voilà, certaines fonction dont j'aurais besoin de sont pas présente en particulier :
- Régler la transparence de l'image
- Faire en sorte qu'une image se répète (par exemple une image qui fait 120*60 si le rectangle dans lequel elle est affiché fais 120*90, il faut qu'elle rajoute en plus les 30 premiers pixels pour compléter).
Bref, si vous aviez des idées concernant ces deux choses, j'ai pourtant fouillé la gui mais impossible de trouver une fonction qui pourrais me permettre ceci ?
Merci d'avance
Capry
Hors ligne
Ton projet m'interesse, pour plusieurs raisons.
Donc, dès ce WE (moment ou j'ai un peu de temps), j'essaierais de travailler la dessus si je peux t'aider sur les aspect que tu énonces. Si cela t'interesse bien sûr
Hors ligne
Pour 'appâter' si tu avais une ou deux photo d'écran pour montrer ce donne déjà, cela serait cool
Et un petit package sera sympa, comme base de départ pour faire des tests et voir ce qui est possible de faire
pour que cela avance dans les secteur ou cela bloque, non ?
Hors ligne
Pour l'instant ça ne donne pas grand chose de vraiment intéressant. Mes boutons sont fais avec paint et je laisserais le soin à mon designer de s'occuper de remplacer le design de la gui . J'ai juste fais un truc basique, avec paint. Je ne m'occupe que de la programmation dans un premier temps. Pour l'instant voici tout ce que l'on peut faire (ma gui se nomme IrrGUI, très original ^^) :
irr::gui::IGUIEnvironnement* mainGui;
IrrGUI* gui(mainGui, driver);
IrrGUIBouton* bouton = gui->addBouton("Le texte",false,450,350,100,50);
Paramètre 1 : texte du bouton.
Paramètre 2 : true : utilise les dimensions données après; false : adapte les dimensions du bouton à la taille du texte
Paramètre 3 : position X du point supérieur gauche.
Paramètre 4 : position Y du point supérieur gauche.
Paramètre 5 : dimensions X du bouton.
Paramètre 6 : dimensions Y du bouton.
Bref d'autre viendront après comme la transparence... Je n'en suis encore qu'au début de la gui, bien qu'ayant fais une bonne partie du côté polymorphisme (les classes bouton, fenêtre, texte, etc... dérive de IrrGUIElement) le côté visuel n'en est qu'au commencement. La transparence n'est pas urgent mais j'ai besoin de faire une image se répétant pour que, admettons que j'ai une image rouge, l'arrière plan du bouton sois entièrement rouge (sans pour autant faire une image rouge gigantesque pour être sûr que tout le bouton sois rouge :S). Donc voilà où en est l'avancement de la gui.
Dernière modification par capry (08-06-2009 23:20:36)
Hors ligne
capry :
Bonjour,
Mes voilà, certaines fonction dont j'aurais besoin de sont pas présente en particulier :
- Régler la transparence de l'image
Je peux au moins répondre à ça :
http://irrlicht.sourceforge.net/docu/cl … image.html
On peut trouver une fonction setColor qui permet d'appliquer un changement de couleur à ton image, en gros si tu files une composante ARGB où alpha est entre 0 et 255, tu peux obtenir un effet de semi-transparence.
Un truc dans ce genre :
Hors ligne
Oui mais ça ne marche pas dans le cas où l'on veux régler la transparence à 0 par exemple :S.
Hors ligne
0 = invisible, il suffit de ne pas afficher l'image dans ce cas.
Hors ligne
Oui d'accord mais en ce que je veux dire c'est que l'on ne peut pas réglé la transparence à 10 si tu veux, mais tu m'as compris ^^. Mais le plus important pour l'instant c'est surtout le moyen d'avoir l'image qui se respecte dans un triangle donné (sans avoir à reproduire soi-même plein de fois la même image si possible :S).
Hors ligne
capry :
Oui mais ça ne marche pas dans le cas où l'on veux régler la transparence à 0 par exemple :S.
Je ne comprends pas ce que tu veux dire par là, comme le dit Aranoth, si transparence = 0, plus d'image visible, non ?
Hors ligne
j'ai mis 10 pas 0 ^^. Si on veut réglé la transparence à 10 l'image blanchira mais on ne verra pas ce q'il y a dessous pour autant, si j'ai bien compris.
Hors ligne
Tu as testé avant ? Je ne vois pas pourquoi le blending ne fonctionnerait pas, même si c'est des quads dans une vue orthogonale, ça reste les même mécanismes qu'en 3D
Hors ligne
capry :
j'ai mis 10 pas 0 ^^. Si on veut réglé la transparence à 10 l'image blanchira mais on ne verra pas ce q'il y a dessous pour autant, si j'ai bien compris.
Si, cela fonctionne bien à ce niveau. Si tu as des éléments derrière ton image, alors cela sera parfaitement visible, comme derrière une fêntre de verre
Hors ligne
Ah ? D'accord je testerais alors ^^, autant pour moi. Mais cela ne résous pas mon problème principal qui est la répétition de l'image, quelqu'un aurais une idée ? Entre-temps cet aprem je n'ai eu que le temps de faire en sorte que les bordures se mettent autour du bouton, j'attends encore la résolution du problème avant de passer aux évènements du bouton.
Hors ligne
j'ai déjà un petit code si sa te tente ...
Hors ligne
je veux bien ouais ^^, là je sèche un peu sur le truc de répétition :S
Hors ligne
bon alors perso j'ai juste modifier de IGUISkin, pas vraiment dans ton optique si j'ai bien comprit m'enfin j'aime bien se que sa rend
le headler :
et la source :
répétition ? fait des essaye avec le clipRect si tu utilise un driver->draw2dImage
en récupérent le clipRect de guienv->getRootGUIElement()->AbsoluteClippingRect sa marche je croix ... enfin ses vieux, quand je l'avais fait
seulement il est en protected ....
ta de la chance tu va être le premier du forum a voir un extré de mon projet
Dernière modification par Magun (16-08-2009 10:45:52)
Hors ligne
Ouah ! ça rend carrément chouette ^^ ! Je vais étudier ton code ce week-end et l'adapter ! Merci beaucoup !
Hors ligne
copie pas tout tout de même !
j'ai poster le code pour que tu t'en inspire ... tu trouve un code similaire sans mes modif dans les codes snifer du forum off
ne me fait pas regretter mon geste
Dernière modification par Magun (13-06-2009 01:40:14)
Hors ligne
Pas mal ton message d'ailleurs sur le forum off (Ovan )
Hors ligne
merci
ses que j'ai pas trop l'habitude de poster en anglais ... donc voila
Dernière modification par Magun (13-06-2009 13:45:22)
Hors ligne
Donc finalement toujours le même problème de fond :S, je continue les recherches
Hors ligne
je suis pas sur que tu a tout comprit le principe de ma class ...
en fait sa modifie le IGUISkin du moteur, après j'ai juste a faire guienv->addTrucMuch(...); , et il aqui directement sont "skin"
après si tu crée tes propre élément gui, il acquis directement le skin ... sans rien modifier
Hors ligne