Chargement image ds un picturebox (redimentionement,proportion,centrage)

Soyez le premier à donner votre avis sur cette source.

Vue 9 046 fois - Téléchargée 1 592 fois

Description

Voila ce petit code permet de charger une image dans un picture box
- En l'adaptant a la taille de la picture box (Stretch du controle image)
- En gardant le rapport hauteur x largeur
- En en la centrant sur le picture box

Ci joint le zip
sinon voila le code!!!!

Source / Exemple :


Private Sub Form_Load()
TailleReel.AutoSize = True
Picture1.AutoRedraw = True
End Sub

Private Sub Command1_Click()
Dim NewLargeur As Integer
Dim NewHauteur As Integer
Dim Coeff As Integer
Dim x As Integer
Dim y As Integer
Picture1.Cls
With CommonDialog1
.Filter = "(*.Jpg;*.bmp)|*.bmp;*.jpg"
.ShowOpen
End With

TailleReel.Picture = LoadPicture(CommonDialog1.FileName)

'si la taille est plus petite que la picturebox
If TailleReel.Width < Picture1.Width And TailleReel.Height < Picture1.Height Then
Coeff = 1
x = (Picture1.Width - TailleReel.Width) / 2
y = (Picture1.Height - TailleReel.Height) / 2
GoTo Affiche_image
End If
'definition du coefficient selon l'orientation de l'image

If TailleReel.Width > TailleReel.Height Then
    Coeff = TailleReel.Width / Picture1.Width
    x = 0
    y = (Picture1.Height - (TailleReel.Height / Coeff)) / 2
Else
    Coeff = TailleReel.Height / Picture1.Height
    x = (Picture1.Width - (TailleReel.Width / Coeff)) / 2
    y = 0
End If
Affiche_image:
NewLargeur = TailleReel.Width / Coeff
NewHauteur = TailleReel.Height / Coeff
Picture1.PaintPicture TailleReel.Picture, x, y, NewLargeur, NewHauteur
End Sub

Conclusion :


il serait facile d'en faire une fonction, mais je trouve pas le moyen de trouver la resolution de l'image sans passer par un controle!!!! l'ideal serait une api???
Si qq as une idée??

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

codea
Messages postés
94
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
6 août 2006
-
Public Sub ChargerImages(Prefix As String, Count As Integer, ByRef Pbox() As StdPicture, Optional picType As String) If picType "" Then picType "jpg"
On Error Resume Next
' index 0 pas utilisé
ReDim Pbox(Count)
For i = 1 To Count
Set Pbox(i) = New StdPicture
Set Pbox(i) = LoadPicture(Prefix & Format(i, "0000") & "." & picType)
Next i
End Sub
cs_ciram
Messages postés
2
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
22 mai 2007
-
bonjour,
merci pour le code mais je suis archi debutant et je ne sais pas si je peux l'intégrer sous vb6? si oui comment faire dans une form existante.
Merci d'avance
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
ou alors a = LoadPicture("c:\a.jpg").Width
cs_OphidiaN
Messages postés
235
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
9 novembre 2007
-
ou bien tu peux proceder comme ça:

Dim Image As Picture
Set Image=Loadpicture(.....)

et là tu as les prop Image.Width et Height.... le tout sans controle

@++
cs_OphidiaN
Messages postés
235
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
9 novembre 2007
-
ouais ya ça sur vbaccelerator je crois (pour travailler sur une image sans controle....) mais bon...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.