Centrare un oggetto grafico all'interno di un Contenitore

Da Gambas-it.org - Wikipedia.

Consideriamo qui tre modi di porre al centro un Controllo rispetto al suo Contenitore Padre:

  • centrare il Controllo orizzontalmente;
  • centrare il Controllo verticalmente;
  • centrare il Controllo sia orizzontalmente, sia verticalmente.

Centrare orizzontalmente il Controllo rispetto alle dimensioni del suo Contenitore

Uso degli Oggetti HBox e Spring

Si potrà fare uso degli Oggetti grafici HBox e Spring: [nota 1]

Public Sub Form_Open()

 Dim hControl As HBox
 Dim hSpring As Spring
 Dim hButton As Button

 With Me
   .W = 500
   .H = 500
   .Arrangement = Arrange.Vertical
 End With

' Distanzia di 100 px il "Button" dal bordo superiore:
 With hControl = New HBox(Me)
   .H = 100
 End With
 With hControl = New HBox(Me)
   .H = 28
 End With
 hSpring = New Spring(hControl)
 With hButton = New Button(hControl) As "Button1"
   .AutoResize = True
   .Text = "Click me !"
 End With
 hSpring = New Spring(hControl)

End

Mediante un calcolo tra la sua dimensione e quella del proprio Contenitore

Nel centrare "orizzontalmente" un Oggetto grafico all'interno del proprio Contenitore Padre, non si terrà conto della sua posizione sull'asse della y del Contenitore medesimo.
Si provvederà mediante un calcolo tra la sua dimensione e quella del proprio Contenitore:

Public Sub Form_Open()

 Dim hButton As Button

 With hButton = New Button(Me) As "Button1"
   .W = 100
   .H = 50
   .X = (Me.W - .W) / 2
   .Y = 250
 End With

End


Centrare verticalmente il Controllo rispetto alle dimensioni del suo Contenitore

Uso degli Oggetti VBox e Spring

Si potrà fare uso degli Oggetti grafici VBox e Spring: [nota 1]

Public Sub Form_Open()

 Dim hControl As VBox
 Dim hSpring As Spring
 Dim hButton As Button

 With Me
   .W = 500
   .H = 500
   .Arrangement = Arrange.Horizontal
 End With
' Distanzia di 70 px il "Button" dal bordo sinistro:
 With hControl = New VBox(Me)
   .W = 70
 End With
 With hControl = New VBox(Me)
   .W = 120
   .AutoResize = True
 End With
 hSpring = New Spring(hControl)
 With hButton = New Button(hControl) As "Button1"
   .AutoResize = True
   .Text = "Click me !"
 End With
 hSpring = New Spring(hControl)

End

Mediante un calcolo tra la sua dimensione e quella del proprio Contenitore

Nel centrare "verticalmente" un Oggetto grafico all'interno del proprio Contenitore Padre, non si terrà conto della sua posizione sull'asse della x del Contenitore medesimo. Si provvederà anche in questo caso mediante un calcolo tra la sua dimensione e quella del proprio Contenitore:

Public Sub Form_Open()

 Dim hButton As Button

 With hButton = New Button(Me) As "Button1"
   .W = 100
   .H = 50
   .X = 250
   .Y = (Me.H - .H) / 2
 End With

End


Centrare sia orizzontalmente sia verticalmente il Controllo rispetto alle dimensioni del suo Contenitore

In sostanza in questo caso si porrà il Controllo esattamente al centro del proprio Contenitore.

Uso degli Oggetti HBox e Spring

Si potrà fare uso degli Oggetti grafici HBox e Spring: [nota 1]

Public Sub Form_Open()   

 Dim hControl As HBox
 Dim hSpring As Spring
 Dim hButton As Button
 
 With Me
   .W = 500
   .H = 500
   .Arrangement = Arrange.Vertical
 End With
 With hControl = New HBox(Me)
   .Expand = True
 End With
 With hControl = New HBox(Me)
   .H = 28
 End With
 hSpring = New Spring(hControl)
 With hButton = New Button(hControl) As "Button1"
   .AutoResize = True
   .Text = "Click me !"
 End With
 hSpring = New Spring(hControl)
 With hControl = New HBox(Me)
   .Expand = True
 End With

End

Mediante un calcolo tra la sua dimensione e quella del proprio Contenitore

Mostriamo un esempio, nel quale una Label colorata viene posizionata al centro del Form:

Public Sub Form_Open()

 With Label1
   .X = (Me.W - .W) / 2
   .Y = (Me.H - .H) / 2
   .Background = Color.Yellow
 End With

End


Note

[1] Il codice è stato suggerito dal membro Gianluigi del forum www.gambas-it.org.