|
Das Image-Steuerelement stellt sich zwar automatisch auf die
Größe eines in seine Picture-Eigenschaft geladenen Bildes ein,
wenn seine Stretch-Eigenschaft auf False gesetzt ist. Setzen Sie die
Stretch-Eigenschaft auf True, können Sie die Breite und die Höhe
unabhängig voneinander manipulieren. Zum Vergrößern oder
Verkleinern des Bildes unter Beibehaltung des Seitenverhältnisses
(proportionales Skalieren) müssen Sie allerdings ein wenig rechnen,
wenn Sie das Bild in einen vorgegebenen Raum (Rechteck) einpassen
wollen.
Die Prozedur AdjustImageToRect nimmt Ihnen die Rechenarbeit ab.
Dieser Prozedur übergeben Sie in den Parametern das anzupassende
Image-Steuerelement und die Breite und Höhe des Rechtecks, in das
es eingepasst werden soll. Dazu können Sie optional festlegen, ob
das Image-Steuerelement automatisch in diesem Rechteck zentriert
werden soll, und Sie können ebenfalls optional eine zusätzliche
horizontale und/oder vertikale Verschiebung angeben.
Public Sub AdjustImageToRect(Image As Image, ByVal Width As Single, _
ByVal Height As Single, Optional ByVal Left As Single, _
Optional ByVal Top As Single, _
Optional ByVal Centered As Boolean = True)
Dim nDestScale As Single
Dim nImageScale As Single
Dim nLeftOffset As Single
Dim nTopOffset As Single
Dim nWidth As Single
Dim nHeight As Single
With Image
.Visible = False
.Stretch = False
.Refresh
nWidth = .Width
nHeight = .Height
nDestScale = Width / Height
nImageScale = nWidth / nHeight
.Stretch = True
If nDestScale >= nImageScale Then
nWidth = nWidth / (nHeight / Height)
nHeight = Height
If Centered Then
nLeftOffset = (Width - nWidth) \ 2
End If
Else
nHeight = nHeight / (nWidth / Width)
nWidth = Width
If Centered Then
nTopOffset = (Height - nHeight) \ 2
End If
End If
.Move Left + nLeftOffset, Top + nTopOffset, nWidth, nHeight
.Visible = True
End With
End Sub
 |
Die Prozedur AdjustImageToRect passt ein
Image-Steuerelement proportional in ein gegebenes Rechteck ein

|
Die automatische Einpassung in ein Formular in dessen
Resize-Ereignis sähe beispielsweise so aus:
Private Sub Form_Resize()
With Me
If .WindowState <> vbMinimized Then
AdjustImageToRect Image1, .ScaleWidth, .ScaleHeight
End If
End With
End Sub
 |
Das Beispiel zeigt, wie sich ein
Image-Steuerelement den Größenänderungen eines Forms
anpasst

|

|