Problème avec le PictureBox

Résolu
gibea00 Messages postés 17 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 13 novembre 2007 - 7 mars 2007 à 20:38
jerry6510 Messages postés 19 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 14 mars 2007 - 8 mars 2007 à 14:37
Bonjour !

J'ai un problème avec un de mes pictureBox.  Je veux mettre une image de type Bmp à l'intérieur de mon pictureBox.  Es-ce qu'il y a un moyen afin que l'image s'ajuste automatiquement à la grandeur du pictureBox ?

Présentement, mon image étant plus grosse je ne vois qu'une partie d'elle ?

Es-ce que quelqu'un connaît la façon de régler ce problème ?

Merci

Alexandre

12 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
7 mars 2007 à 20:47
Avec le controle PictureBOx, tu as la propriété AutoSize, mais elle fait l'inverse de ce que tu veux. C'est le controle qui va etre redimentionné à la taille de l'image.

Sinon il fat prendre le controle Image, ou là tu as la propriété Stretch qui correspond à ce que tu veux.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 mars 2007 à 21:14
Méthode popur avoir ta picturebox la plus grande possible tout en respectant les propoortions :

1) Au départ : une picturebox parfaitement carrée
2) regarder les grandeurs réelles de ton image et :
   - si plus haute que large, choiisir la hauteur de ta picturebox pour la hauteur
   - si plus large que haute : choisir la largeur de ta picturebox pour la largeur
3) une fois ainsi choisie la dimension maximum, pour, selon le cas, la hauteur ou la largeur :
  - appliquer à l'autre dimension le coefficient hauteur/largeur qui permet de garder les mêmes proportions
  - terminer maintenant par paintPocture ou (mieux) par la fonction StretchBlt de l'Api de Windows.

Voilà.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 mars 2007 à 21:49
Tiens,

Je t'ai "fabricoté/bâclé" quelque chose en vitesse :

regarde, comprends, et prends ce qui t'intéresse :

dans une form :
un cadre carré appelé Frame 1 (aux dimensions que tou voudras, mais carré !
dans ce cadre frame1, une image image1, aux dimensions que tu voudras (peu importe puisque le programme ajustera) avec la propriété picture = ta photo
ailleurs sur la Form (ou tu voudras et minuscule si tu veux)une image image2
ailleurs sur la Form (ou tu voudras car j'ajuste ensuite) : un bouton command1
où tu voudras : un timer timer1
le temps d'exposition est fixé par exposeconds (ici 3 mais tu peux modifier comme tu l'entends)


Private centre As Integer
Private zou As Integer
Private jmf As Boolean
Const exposeconds = 3
Private Sub Command1_Click()
Dim rapfin As Single
 Image2.Picture = Image1.Picture
 If Image2.Height >= Image2.Width Then
   rapfin = Image2.Width / Image2.Height
   Image1.Height = Frame1.Height
   Image1.Width = Frame1.Height * rapfin
 Else
   rapfin = Image2.Height / Image2.Width
   Image1.Width = Frame1.Width
   Image1.Height = Frame1.Width * rapfin
 End If
 Image1.Left = (Frame1.Width - Image1.Width) / 2
 Image1.Top = (Frame1.Height - Image1.Height) / 2
  Frame1.Left = Me.Width
  zou = Int(centre / 20)
  If Timer1.Enabled = True Then
    Timer1.Enabled = False
  Else
   Timer1.Enabled = True
  End If
End Sub


Private Sub Form_Activate()
  Me.Move 0, 0, Screen.Width, Screen.Height
  centre = Int((Me.Width - Frame1.Width) / 2)
  With Frame1
    .Top = Int((Me.Height - Frame1.Height) / 2)
    .Left = Me.Width
    .Caption = ""
    .BorderStyle = 0
  End With
  Image1.Stretch = True
  Image2.Visible = False
  Command1.Caption = "envoyer photo"
  Command1.Move (Me.Width - Command1.Width) / 2, Me.Height - (Command1.Height * 2)
End Sub


Private Sub Timer1_Timer()
 Dim coucou As Integer, depart As Double
 coucou = 1
 Frame1.Left = Frame1.Left - zou
 zou = zou + coucou
 coucou = coucou + 20 If Frame1.Left <centre And jmf False Then
   Timer1.Enabled = False
   depart = Timer
   While Timer < depart + exposeconds
   Command1.Visible = False
     DoEvents
   Wend
   jmf = True
 End If
 Timer1.Enabled = True
 If Frame1.Left < Me.Left - (Frame1.Width * 2) Then
   Timer1.Enabled = False
   jmf = False
   Command1.Visible = True
 End If
End Sub


Fastoche
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 mars 2007 à 22:54
Ouille !

dans ma précipitation et ma focamosation sur les calculs de proportions, j'ai traité une image et pas une picturebox !...

Voilà donc pour une pocturebox :

sur une Form, une pisturebox nommée tremplin et une picturebox nommée Picture1.

Code :

Private Sub Form_Activate()
 Me.Move 0, 0, Screen.Width, Screen.Height
 Picture1.ScaleMode = vbPixels
 tremplin.ScaleMode = vbPixels
 With Frame1
   .Move Me.Width / 10, Me.Height / 10, Me.Width / 2, Me.Width / 2
   .BorderStyle = 0
   .Move (Me.Width - .Width) / 2, (Me.Height - .Height) / 2
 End With
 With tremplin
   .Visible = False
   .AutoSize = True
   .Picture = LoadPicture("d:\superdeb.jpg")  ' remplace ici par le fichier image de ton choix ...
 End With
 Set Picture1.Container = Frame1
 Picture1.Move 0, 0, Frame1.Width, Frame1.Height
 hauteur = tremplin.Height
 largeur = tremplin.Width
 coef = hauteur / largeur
 If hauteur >= largeur Then
   Picture1.Height = Frame1.Height
   Picture1.Width = Frame1.Width / coef
 Else
   Picture1.Width = Frame1.Width
   Picture1.Height = Frame1.Height * coef
 End If
 Picture1.Move (Frame1.Width - Picture1.Width) / 2, (Frame1.Height - Picture1.Height) / 2
 Picture1.AutoRedraw = True
 Picture1.PaintPicture tremplin, 0, 0, Picture1.Width, Picture1.Height, 0, 0, largeur, hauteur
End Sub
0

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

Posez votre question
jerry6510 Messages postés 19 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 14 mars 2007
8 mars 2007 à 13:58
salut !
tu as une option dans tes les caractéristique de ton pictures box qui schress (tu a le choix avec title,none,default,schress,etc...) ou un truc dans le genre et cela te la mais a la taille automatic de ta picturebox !
(désolé pour la précison d'ou elle se trouve)
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 mars 2007 à 14:05
Jerry regarde que qui a été dit dans la réponse validée, stp.

une PictureBox ne redimentionne pas une image, c'est elle qui se redimentionne à la taille de l'image.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 mars 2007 à 14:08
Euh...
C'est quoi, çà, Jerry ?

Tu veux bien "TENTER D'EXPLIQUER" ?
pour rappel : on développe ici sous VB !
0
jerry6510 Messages postés 19 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 14 mars 2007
8 mars 2007 à 14:14
désolé casy je n'avais pas lu jusqu'au bout ta réponse !!!
autemp pour moi !
sauf que la méthode stretch permet bien de mettre l'image que tu met dans la picturebox à la taille de celle ci !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 mars 2007 à 14:21
Hola, Jerry !
Ne pas confondre le Stretch que tu fais sur un contrôle image inséré dans un container PictureBox avec un "Stretching" de la  picturebox !
0
jerry6510 Messages postés 19 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 14 mars 2007
8 mars 2007 à 14:23
excuse moi je ne suis pas un pro de vb tu peut préciser !!!
merci
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 mars 2007 à 14:35
Il n'y a pas grand chose à préciser, Jerry, si ce n'est qu'un contrôle image inséré dans un container picturebox reste et ne sera jamais qu'un contrôle image, pas une picturebox lui-même !!!

Suggestion : regarde dans ton aide en ligne ce qu'est :
- un contrôle image
- un contrôle PictureBox
- un container (qui peut être une Form, un Frame ou une PictureBox).

Je ne vois vraiment pas quoi ajouter... tu me laisses coi !
0
jerry6510 Messages postés 19 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 14 mars 2007
8 mars 2007 à 14:37
okai je regarderai !
bonne journée
0
Rejoignez-nous