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

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

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

#1

Message 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.
Fichiers joints
Autoit.rar
(43.35 Kio) Téléchargé 291 fois
Modifié en dernier par yohan8 le ven. 05 sept. 2014 16:02, modifié 3 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#2

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

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

#3

Message 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
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#4

Message 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 )
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

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

#5

Message 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.
Modifié en dernier par jguinch le ven. 05 sept. 2014 16:10, modifié 1 fois.
Raison : Ajout de la balise Spoiler
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#6

Message par jguinch »

Pas mal :D
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#7

Message 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
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

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

#8

Message 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
Répondre