Buongiorno a tutti, in twinbasic come si può mantenere le proporzioni in un'immagine caricata con load picture... e poi ridimensionata? Ho provato in mille modi... ma senza ancora riuscirvi purtroppo...Grz a chi mi farà un esempio
![]()
Buongiorno a tutti, in twinbasic come si può mantenere le proporzioni in un'immagine caricata con load picture... e poi ridimensionata? Ho provato in mille modi... ma senza ancora riuscirvi purtroppo...Grz a chi mi farà un esempio
![]()
"Vero sapiente è colui che sa di non sapere" (Socrate)
Come hai caricato l'immagine? Su quale controllo?
No MP tecnici (non rispondo nemmeno!), usa il forum.
I controlli che ho utilizzato sono Picture e Image
e questi sono i code che ho provato... ma senza esito in quanto l'immagine appunto quando ridimensiono la finestra mi viene stretchata e perde sia la definizione che le proporzioni
Sub RidimensionaImage()
On Error GoTo errore
If Not PicImg.Picture Is Nothing Then
Dim nW As Long = PicImg.Width, nH As Long = PicImg.Height
Dim nW2 As Long, nH2 As Long
If nW > nH Then
nW2 = PicContainer.ScaleWidth - (30 * Screen.TwipsPerPixelX) ' bordo 30 twips
' nW2: nW = x: (nH + 30 * Screen.TwipsPerPixelX)
nH2 = (nW2 * (nH - 30 * Screen.TwipsPerPixelX)) / nW
Else
nH2 = PicContainer.ScaleHeight - (30 * Screen.TwipsPerPixelY) ' bordo 30 twips
' nh2: nH = x: (nW - 30 * Screen.TwipsPerPixelY)
nW2 = (nH2 * (nW - 30 * Screen.TwipsPerPixelY)) / nH
End If
Image1.Picture = PicImg.Picture
Image1.Height = nH2
Image1.Width = nW2
Image1.Left = (PicContainer.ScaleWidth - nW2) / 2
Image1.Top = (PicContainer.ScaleHeight - nH2) / 2
Me.Refresh
End If
errore:
If Err <> 0 Then Err.Clear
End Sub
Sub MostraImmagine(sFile As String)
On Error GoTo errore
PicImg.Picture = LoadPicture (sFile)
RidimensionaImage
errore:
If Err <> 0 Then
MsgBox Err.Description
Err.Clear
End If
End Sub
Sub GestineResize()
On Error GoTo errore
PicContainer.Width = Me.ScaleWidth - PicContainer.Left * 2
PicContainer.Height = Me.ScaleHeight - PicContainer.Top - 2 * Screen.TwipsPerPixelY
RidimensionaImage()
errore:
If Err <> 0 Then
Err.Clear
End If
End Sub
Private Sub Form_Resize()
GestineResize
End Sub
![]()
"Vero sapiente è colui che sa di non sapere" (Socrate)
Sulla definizione non puoi fare miracoli.
Per le proporzioni dovrei provare il codice...
No MP tecnici (non rispondo nemmeno!), usa il forum.