Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Astuce]Rendre une fenêtre proportionnelle à l'écran
Auteur Message
Répondre en citant
Message [Astuce]Rendre une fenêtre proportionnelle à l'écran 
Salut,

un peu sur le même genre que mon autre astuce pour rendre proportionnels les objets et la fenêtre
d'une Gui autoit, je vais vous expliquer comment faire pour rendre proportionnelle la taille d'une Gui quelconque et de ses objets par rapport à l'écran
utilisé afin que celle-ci soit la même sur tous les écrans.

En gros, imaginons que vous ayez une Gui toute simple qui contient une fenêtre basique et un texte :

Code:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 630, 450, 192, 124)
Global $Label1 = GUICtrlCreateLabel("Txt", 192, 104, 48, 41)
GUICtrlSetFont(-1, 25, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd


logiquement cette fenêtre est adaptée à votre écran mais elle ne l'est pas forcément avec celle des écrans de ceux qui vont utiliser
votre code.
Si votre écran fait 1280x1024 pixels,

alors on peut dire que le coef de proportionnalité entre la taille de votre Gui et celle de votre écran est égal à (l*L)/(l1*L1)
sachant que l est la largeur de votre Gui, L sa longueur, l1 la largeur de votre fenêtre et L sa longueur
Dans ce cas l=630, L=450, l1=1280 et L1=1024

Ainsi on a : c=(630*450)/(1280*1024)

Bien sur si l=l1 et L=L1 on se retrouve avec un coef de 1 et votre Gui est donc en plein écran.

ici c~0.2163

Mais maintenant imaginons que la personne qui utilise votre Gui aie un écran de 800x600

à ce moment on se retrouve avec c=(630*450)/(800*600)
c~0.6

Et là c'est le drame ! Les deux coef sont différents donc cela veut dire que votre fenêtre ne prend pas la même place sur votre écran que chez le sien !
Votre fenêtre n'est donc pas proportionnelle à la taille de l'écran.

Mais n'ayez crainte, il y a une solution Mr. Green

La règle de Trois ou les produits en croix, vous appellez ça comme vous voulez du moment que l'on parle de la même chose Mr. Green

Bien chez vous la largeur de votre Gui peut s'écrire comme ça : l=630
et le coef entre l et l1 comme ça : c=630/1280
et celui des largeurs comme ça : c2=450/1024

Nous allons nommer x la largeur de la Gui chez notre ami qui a un écran de 800*600 pixels et y la longueur.

chez lui le coef de largeur s'écrit : c3=x/800
et celui de longueur : y/600

Avec la règle de Trois on trouve : x=630*800/1280 et y=450*600/1024
x=393.75
y~263.7

Mais on ne va pas quand même faire ça pour toutes les résolutions d'écrans, nous allons donc utiliser @DesktopWidth (largeur max de l'écran) et @DesktopHeight (longueur max de l'écran)

On va donc dans un premier temps se retrouver avec ce code :

Code:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 630/1680*@DesktopWidth, 450/1050*@DesktopHeight, 192, 124)
Global $Label1 = GUICtrlCreateLabel("Txt", 192, 104, 48, 41)
GUICtrlSetFont(-1, 25, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd


Pourquoi 1680 et 1050 car se sont mes résolutions d'écrans, si vous lancez ce code vous devriez trouver presque la même chose que moi.
Si vous faites un prog utilisez vos dimensions d'écrans car la fenêtre sera automatiquement calibrée sur vos dimensions.

Mais un problème persiste, le label ne va pas se redimensionner pour ça il faut faire la même technique dans le label.

On trouve donc comme code :

Code:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 630/1680*@DesktopWidth, 450/1050*@DesktopHeight, 192, 124)
Global $Label1 = GUICtrlCreateLabel("Txt", 192/1680*@DesktopWidth, 104/1050*@DesktopHeight, 48, 41)
GUICtrlSetFont(-1, 25, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd


Voilà vous savez maintenant comment rendre proportionnelle une fenêtre par rapport à la taille de l'écran.

A+

PS : Pensez bien, quand vous utiliserez cette technique dans vos programmes, à mettre vos dimensions.
Pour celui-là pas la peine car il est calibré sur mon ordi car c'est moi qui l'aie fait

PS2 : Pensez à changez les dimensions par des variables pour pas s'embêter.



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Astuce]Rendre une fenêtre proportionnelle à l'écran 
Bonjour
merci pour tes deux astuces.
Elles vont bien m'aider, car justement j'ai un soucis de taille et surtout de positionnement de la fenêtre par rapport à l'écran.
Jamais elle ne se met au milieu




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Message [Astuce]Rendre une fenêtre proportionnelle à l'écran 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch