Centrare un oggetto grafico all'interno di un Contenitore
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.
Indice
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.