Variare le dimensioni di una Picture (Stretch) con un comando Visual Basic
Con il metodo PaintPicture,puoi copiare e riadattare una picture.
In un Form inserire 2 Picture.
La 1ª con nome picOld con proprietà:
AutoSize = True
Visible = False
Picture = Assegnare l'immagine desiderata
La 2ª Picture con nome picNew con proprietà:
AutoSize = True
Visible = True
Picture = non assegnare alcuna immagine
Assicurarsi che lo ScaleMode di picOld sia lo stesso dello ScaleMode di picNew.
Infine inserire questo codice d'esempio:
Private Sub Form_Load()
Dim fattoreDiRiduzione As Single
fattoreDiRiduzione = 2
RidimensionaPic fattoreDiRiduzione
End Sub
Public Sub RidimensionaPic(fattoreDiRiduzione As Single)
picOld.AutoSize = True
picNew.Width = picOld.Width / fattoreDiRiduzione
picNew.Height = picOld.Height / fattoreDiRiduzione
picNew.AutoRedraw = True
picNew.PaintPicture picOld.Picture, 0, 0, picNew.ScaleWidth, picNew.ScaleHeight, 0, 0, picOld.ScaleWidth, picOld.ScaleHeight
End Sub
La picture in picNew
sarà come dimensioni la metà di picOld, variare il fattoreDiRiduzione per
ottenere diversi ingrandimenti o riduzioni.
2° Metodo
In un Form inserire 2 Picture.
La 1ª con nome picOrigine con proprietà:
AutoSize = True
Visible = False
Picture = Assegnare l'immagine desiderata o caricarla a
RunTime
La 2ª Picture con nome picDest con proprietà:
AutoSize = False
Visible = True
Picture = non assegnare alcuna immagine
Height = quella da Te desiderata
Width = quella da Te desiderata
Assicurarsi che lo ScaleMode di picOrigine sia lo stesso dello ScaleMode di picDest.
Infine inserire questo codice d'esempio:
Private Sub Form_Load()
RidimensionaImmagine picOrigine,picDest
End Sub
'Dimensionare un'immagine in una PictureBox
'preservando le su proporzioni originali.
'Copia l'immagine da picOrigine in picDest
'ridimensionandola in modo da avere le stesse
'proporzioni dell'immagine originale.
Public Sub RidimensionaImmagine(ByVal picOrigine As PictureBox, picDest As PictureBox)
Dim fAspettoOrigine As Single
Dim fLarghezza As Single
Dim fAltezza As Single
'Ricava la proporzione dell'immagine originale
fAspettoOrigine = picOrigine.ScaleWidth / picOrigine.ScaleHeight
'Ricava la grandezza utilizzabile
fLarghezza = picDest.ScaleWidth
fAltezza = picDest.ScaleHeight
'Adegua il rapporto fLarghezza/fAltezza
'in modo da armonizzarsi con fAspettoOrigine.
If fLarghezza / fAltezza > fAspettoOrigine Then
'L'area è troppo corta ed ampia,
'la restringe.
fLarghezza = fAspettoOrigine * fAltezza
Else
'L'area è troppo lunga e stretta.
'la restringe.
fAltezza = fLarghezza / fAspettoOrigine
End If
'Centra l'immagine alla grandezza corretta
picDest.AutoRedraw = True
picDest.Cls
picDest.PaintPicture picOrigine.Picture, _
(picDest.ScaleWidth - fLarghezza) / 2, _
(picDest.ScaleHeight - fAltezza) / 2, _
fLarghezza, fAltezza
End Sub
Testato su: Windows 98, Windows Me, Windows 2000 Professional