Page 1 sur 1

[R] Redimensionner une GUI "en douceur" et fluide

Posté : dim. 06 juil. 2014 21:53
par yohan8
Hello,

J'essaye de redimensionner une gui de manière fluide et le résultat que j'obtiens n'est pas très satisfaisant (voir FJ).

Si quelqu'un connais une autre méthode plus "jolie" tout en gardant l'effet "redimensionnement progressif" je suis preneur.

EDIT : j'ai rejouté l'include GUICtrlSetOnHover.

Re: [..] Redimensionner une GUI "en douceur" et fluide

Posté : dim. 06 juil. 2014 22:22
par mikell
Tu pourrais essayer _WinAPI_AnimateWindow mais résultat non garanti en cas de gui compliquée
Et aussi mettre l'include dans le pack, c'est mieux pour tester

Re: [..] Redimensionner une GUI "en douceur" et fluide

Posté : lun. 07 juil. 2014 17:16
par yohan8
Il me semble que _WinAPI_AnimateWindow permet effectivement d'avoir un rendu fluide de certains mouvement (hide/déplacement) de la GUI mais pas pour un redimensionnement.

L'autre solution serait de cacher les bordures noir qui apparaisse lors du redimensionnement vers l'inférieur ou alors de supprimer le contour noir qui provoque peut-être ces bordures épaisses.

EDIT

Impossible de modifier le style "avec bordure fine" à "sans bordure".
► Afficher le texte
J'en arrive même à des résultats surprenants.
► Afficher le texte
Après tout comme dit la doc : "It is the designer responsibility to take care of this compatibility". Trad=Fonction dépendant de la chance du designer

Re: [..] Redimensionner une GUI "en douceur" et fluide

Posté : jeu. 04 sept. 2014 20:54
par jguinch
Et du côté de _WinAPI_SetWindowPos() ?

Code : Tout sélectionner

_WinAPI_SetWindowPos ( $GUI_ID, $HWND_TOP, $Size[0] - $iwidth/2, $Size[1] - $iheight/2, $Size[2] + $iwidth, $Size[3] + $iheight, $SWP_NOREDRAW )

Re: [..] Redimensionner une GUI "en douceur" et fluide

Posté : ven. 05 sept. 2014 16:10
par yohan8
Des résultats surprenant amenant à la résolution de ce topic !

La fonction _WinAPI_SetWindowPos() permet effectivement de redimensionner et repositionner sa GUI mais j'ai trouvé aucun paramètre permettant de le faire en douceur et fluide.

Je suis donc revenu à mon problème qui était de supprimer les bordures de la gui pour la redimensionner sans qu'il y ait de vilain rectangle gris (couleurs de la bordure $WS_POPUPWINDOW) clignotant. Ce que j'ai trouvé de surprenant c'est que j'étais obligé de coupler la fonction GUISetStyle (pour supprimer les bordures avec BitOR($WS_POPUP,$WS_CLIPSIBLINGS)) avec _WinAPI_SetWindowPos(). A contrario la fonction GUISetStyle seul ou avec GuiSetState ne s’exécutait pas ou rendait des résultats incohérent (voir post précédent).

Un code fonctionnelle vaut bien mieux que des mots :
Ajuster la valeur de la variable "vitesse" permet de réduire l'effet saccadé.

► Afficher le texte
Notons le "+1" rouge.! J'ai l'impression qu'il faut qu'il y est un changement dans la taille de la GUI pour que la fonction s’exécute.
Je rajouterais aussi que je n'ai pas cherché en profondeur l’utilité des paramètres de _WinAPI_SetWindowPos.

Re: [R] Redimensionner une GUI "en douceur" et fluide

Posté : ven. 05 sept. 2014 16:11
par jguinch
Pas mal :D

Re: [R] Redimensionner une GUI "en douceur" et fluide

Posté : ven. 05 sept. 2014 17:18
par TommyDDR
Seul problème, la fenêtre fait 601 pixel de large :3

Tenez, voilà de quoi supprimer le problème du +1 :
► Afficher le textecode

Re: [R] Redimensionner une GUI "en douceur" et fluide

Posté : sam. 06 sept. 2014 19:46
par yohan8
Parfait :D

Je viens de comprendre comment effectuer le changement de style avec GUISetStyle, il faut coupler la fonction avec WinMove ou _WinAPI_SetWindowPos.

du coup en enlevant un maximum de code on arrive à éviter d'utiliser l'include WinAPI.au3
► Afficher le texte