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