Création d'une fonction resize pour picture box.

olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008 - 21 déc. 2004 à 15:45
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 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:

coeff_x = largeur / TailleReel.Width
coeff_y = hauteur / TailleReel.Height

If coeff_x > coeff_y Then
coeff = coeff_y
Else:
coeff = coeff_x
End If

NewLargeur = TailleReel.Width * coeff
NewHauteur = TailleReel.Height * coeff

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.

14 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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

Daniel
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
21 déc. 2004 à 18:12
Ok, merci mais ca ne marche pas ou plutôt ca me fais une erreur.

Ca me dit :

Erreur de compilation :
Variable ou procédure attendue, et non un module

Voila je ne comprend pas pourquoi, c'est déja l'erreur que j'avéais avant de poster mon premier message.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 déc. 2004 à 18:22
ça doit être le nom "Resize" qui le gêne, change par autre chose.

Daniel
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
21 déc. 2004 à 18:35
Non ca me fais la même chose avec Retaille.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 déc. 2004 à 18:39
tu serais pas en vb.net ?

essayons autre chose:

Call Retaille ("C:\chemin\image.jpg", Picture1)

nom du module ne doit pas avoir le même nom

Daniel
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
21 déc. 2004 à 18:45
Non je ne suis pas VB.net mais en VB6.
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
21 déc. 2004 à 18:47
Le call ne marche pas non plus, il n'accepte carement pas la ligne.
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
21 déc. 2004 à 18:49
Merci en tous cas de ton aide !!!
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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 !

Daniel
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
21 déc. 2004 à 19:08
Bein oui c kler, je comprend vraiment pas d'ou ca vien.
Peut tu m'envoyer le code complet de ta feuille et de ton module STP.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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

Daniel
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
21 déc. 2004 à 19:18
Ok merci j'essaye
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
21 déc. 2004 à 19:31
Je deviens fou même un mettant ca mot pour mot dans un nouveau projet avec juste un module et une feuille ca merde.
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
21 déc. 2004 à 19:53
C'est bon ton exemple marche !
Je vais maintenet essayer de l'adapter mon projet.
0
Rejoignez-nous