1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| Private Enum Justification
HautDroit = 1
HautCentre = 2
HautGauche = 3
CentreDroit = 11
Centre = 12
CentreGauche = 13
BasDroit = 21
BasCentre = 22
BasGauche = 23
End Enum
Private Sub Recadrage(ByVal PB As PictureBox, ByVal Im As Image, Optional ByVal Marge As Integer = 0,optional Position as Justification )
'Taille des images de départ & d'arrivée
Dim LargeurSource, HauteurSource, LargeurCible, HauteurCible As Integer
LargeurSource = Im.Width
HauteurSource = Im.Height
LargeurCible = PB.ClientSize.Width
HauteurCible = PB.ClientSize.Height
'La taille cible est diminuée de la marge
LargeurCible -= Marge * 2
HauteurCible -= Marge * 2
'Calcul du facteur d'échelle
Dim Echelle As Single = LargeurCible / LargeurSource
Dim Echelle2 As Single = HauteurCible / HauteurSource
If Echelle2 < Echelle Then Echelle = Echelle2
'Mise à l'echelle
LargeurCible = CInt(LargeurSource * Echelle)
HauteurCible = CInt(HauteurSource * Echelle)
'Calcul de la position de l'image réduite dans l'image cible
Dim X, Y As Integer
'... sur l'axe Y
Select Case Position
Case Is > 20 : Y = PB.ClientSize.Height - HauteurCible - Marge 'Bas
Case Is > 10 : Y = (PB.ClientSize.Height - HauteurCible) \ 2 'Centre
Case Else : Y = Marge 'Haut
End Select
'... sur l'axe X
Select Case CStr(Position).Substring(CStr(Position).Length - 1)
Case "1" : X = PB.ClientSize.Width - LargeurCible - Marge 'Droit
Case "2" : X = (PB.ClientSize.Width - LargeurCible) \ 2 'Centre
Case Else : X = Marge 'Gauche
End Select
'Enfin, ce qu'il te manquait ...
'Le dessin dans la PictureBox
Dim Im2 As Image = New Bitmap(PB.ClientSize.Width, PB.ClientSize.Height)
Dim G As Graphics = Graphics.FromImage(Im2)
G.DrawImage(Im, X, Y, LargeurCible, HauteurCible)
PB.Image = Im2
End Sub |
Partager