none
Garder les bouton au même proportion peut importe la taille de la Form RRS feed

  • Question

  • Bonjour ! 

    Je vous demande de l'aide car je n'ai trouver aucun moyen sur internet pour garder tous ce que contient ma Form au même endroit par rapport a la taille de cette dernière. J’espère avoir été assez clair je ne sait pas comment expliquer ce que je recherche 

    Si quelqu'un peut m'aider je lui en serait extrêmement reconnaissant. 

    Merci :) 

    samedi 5 décembre 2015 19:46

Réponses

  • Il y a moyen de tout réévaluer lors d'un événement Resize d'une forme.

    voici du code vb6 qui peut être adapté pour .net, en fait sur la forme il faut faire un

    For each mesControls in Form.... puis faire une mise à l'échelle un par un...

    Public Sub ResizeControls(frm As Form)
    	Dim i As Integer
    	'   Get ratio of initial form size to current form size
    	x_size = frm.height / iHeight
    	y_size = frm.width / iWidth
    	'Loop though all the objects on the form
    	'Based on the upper bound of the # of controls
    	For i = 0 To UBound(List)
    	    'Grad each control individually
    	    For Each curr_obj In frm
    	        'Check to make sure its the right control
    	        If curr_obj.TabIndex = List(i).Index Then
    	            'Then resize the control
    	             With curr_obj
    	                .Left = List(i).Left * y_size
    	                .width = List(i).width * y_size
    	                .height = List(i).height * x_size
    	                .Top = List(i).Top * x_size
    	             End With
    	        End If
    	    'Get the next control
    	    Next curr_obj
    	Next i
    	End Sub

    Maintenant il faut aussi regarder lcet article dans MSDN sur la mise à l'échelle automatique:

    https://msdn.microsoft.com/en-us/library/ms229605%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    Ce n'est pas trivial et du travail.

    Dans certain cas les propriétés Dock et Anchor peut rendre service et suffire.


    Cyrille Precetti

    samedi 5 décembre 2015 21:57

Toutes les réponses

  • Il y a moyen de tout réévaluer lors d'un événement Resize d'une forme.

    voici du code vb6 qui peut être adapté pour .net, en fait sur la forme il faut faire un

    For each mesControls in Form.... puis faire une mise à l'échelle un par un...

    Public Sub ResizeControls(frm As Form)
    	Dim i As Integer
    	'   Get ratio of initial form size to current form size
    	x_size = frm.height / iHeight
    	y_size = frm.width / iWidth
    	'Loop though all the objects on the form
    	'Based on the upper bound of the # of controls
    	For i = 0 To UBound(List)
    	    'Grad each control individually
    	    For Each curr_obj In frm
    	        'Check to make sure its the right control
    	        If curr_obj.TabIndex = List(i).Index Then
    	            'Then resize the control
    	             With curr_obj
    	                .Left = List(i).Left * y_size
    	                .width = List(i).width * y_size
    	                .height = List(i).height * x_size
    	                .Top = List(i).Top * x_size
    	             End With
    	        End If
    	    'Get the next control
    	    Next curr_obj
    	Next i
    	End Sub

    Maintenant il faut aussi regarder lcet article dans MSDN sur la mise à l'échelle automatique:

    https://msdn.microsoft.com/en-us/library/ms229605%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    Ce n'est pas trivial et du travail.

    Dans certain cas les propriétés Dock et Anchor peut rendre service et suffire.


    Cyrille Precetti

    samedi 5 décembre 2015 21:57
  • Merci beaucoup de ta réponse je test ça demain et te tien au courant 

    samedi 5 décembre 2015 23:43
  • Mais si j'ai bien compris il faut multiplier les "coordonné" de base par le rapport d'agrandissement de la Form ?
    samedi 5 décembre 2015 23:48
  • Il y a deux types de valeurs importantes:

    les valeur initiales: iWidth et iHeight qu'il faut capturer lors du chargement de la forme. Probablement dans le .Activate ou .Resize de la forme. Il faut que vous regardiez ces événements pour savoir comment votre forme évolue lors du chargement. Il y a des appels à Resize si vous mettez la forme en taille écran par exemple au démarrage...

    les nouvelles valeurs: frm_Width et frm_Height, qui permettent de faire le ratio en x et y.

    Ensuite chaque contrôle et replacé en fonction de sa position initiale avec les ratio.


    Cyrille Precetti

    dimanche 6 décembre 2015 11:31