olivier857
Messages postés188Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention10 avril 2008
-
21 déc. 2004 à 15:45
olivier857
Messages postés188Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention10 avril 2008
-
21 déc. 2004 à 19:53
Voila je viens de créer un code qui me permet de retailler et centrer mes images dans une PictureBox sans les déformer.
'Si la taille réelle est plus petite que la picturebox
If TailleReel.Width < largeur And TailleReel.Height < hauteur Then
coeff = 1
x = (largeur - TailleReel.Width) / 2
y = (hauteur - TailleReel.Height) / 2
NewLargeur = TailleReel.Width / coeff
NewHauteur = TailleReel.Height / coeff
Picture1.PaintPicture TailleReel.Picture, x, y, NewLargeur, NewHauteur
'Sinon quand la taille réelle n'est plus petite que la picturebox dans les 2 axes
Else:
x = (largeur - NewLargeur) / 2
y = (hauteur - NewHauteur) / 2
Picture1.PaintPicture TailleReel.Picture, x, y, NewLargeur, NewHauteur
End If
Le principe et de mettre une image avec sa taille réelle dans une pictureBox appelé "TailleReel" puis de la centré et la resizé dans une PictureBox "Picture1".
Ce code fonctionne, je voudrai maintenant savoir comment faire pour mettre ce code sous forme de fonction dans un module appellé Resize. Et ensuite comment récuperer cette fonction dans une page feuille qui contiendrai alors 2 PictureBox "TailleReel" et "Picture1".
J'ai essayer pour le module :
Public Sub Resize(hauteur, largeur As Single)
.......(code ci dessus)
End Sub
Et dans ma feuille :
TailleReel.Picture = LoadPicture(...)
Resize hauteur,largeur
' avec hauteur et largeur qui corresponde a la hauteur et largeur de ma picture Box "Picture1"
Picture1.PaintPicture TailleReel.Picture, x, y, NewLargeur, NewHauteur
Voila mais ca ne marche si vous pouvez m'éclairer.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 21 déc. 2004 à 17:51
'-----dans module-----
Public Sub Resize(nom As String, Pict As PictureBox)
Dim Sw As Long
Dim Sh As Long
Dim Pw As Long
Dim Ph As Long
Dim Dw As Long
Dim Dh As Long
Dim sx As Single
Form1.TailleReel.Picture = LoadPicture(nom)
Sw = Form1.TailleReel.Width
Sh = Form1.TailleReel.Height
sx = Sh / Sw
Pw = Pict.ScaleWidth
Ph = Pict.ScaleHeight If sx > (Ph / Pw) Then Dw Ph / sx: Dh Ph Else Dh = Pw * sx: Dw = Pw
Pict.PaintPicture Form1.TailleReel.Picture, (Pw - Dw) / 2, (Ph - Dh) / 2, Dw, Dh, 0, 0, Sw, Sh
End Sub
et dans la Forme:
Resize "C:\chemin\image.jpg", Picture1
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 21 déc. 2004 à 19:00
tu dois avoir un problème alors !
j'ai aussi VB6 et ça marche dans tous les cas, même avec le nom Resize, j'ai essayé aussi dans Form_Load(), dans Form_Resize() ou dans un CommandButton, avec Call ou sans Call ça marche pareil.
tu dois pouvoir appeler un public Sub dans un module quand même !
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 21 déc. 2004 à 19:14
le module s'appelle module1, c'est exactement celui que je t'ai mis avec Option Explicit en plus devant.
la Forme s'appelle Form1, avec une image qui s'appelle Image1, une PictureBox --> Picture1, un CommandButton --> Command1
et rien d'autre ...!
Option Explicit
Private Sub Command1_Click()
Resize "C:\IMAGES\AVATARS\P03.jpg", Picture1
End Sub