OVH Cloud OVH Cloud

images

2 réponses
Avatar
br
Quel est le meilleur controle pour afficher une image (en=20
la redimensionnant tout en gardant les proportions) dans=20
les dimensions du contr=F4le. Quelles propri=E9t=E9s =E0=20
positionner pour =E7a ?
Merci

2 réponses

Avatar
François Picalausa
Bonjour/soir,

La conservation des dimensions doit être faite manuellement.
Sinon, pour affiche l'image, tu peux utiliser:
Un contrôle image avec la propriété strech = true
Une contrôle PictureBox (ou la form) et sa méthode PaintPicture
L'API StrechBlt pour peindre sur un DC connu.

Exemple de code:
Dim RapportTailles As Double
Dim objPicture As Picture
Const PicturePath As String = "c:test.jpg"
Me.ScaleMode = 3 'effectue les traitements en pixels
Const NewHeight As Single = 400 'la taille en hauteur est en pixels.

Set objPicture = LoadPicture(PicturePath)

RapportTailles = objPicture.Width / objPicture.Height

Form1.PaintPicture objPicture, 0, 0, RapportTailles * NewHeight,
NewHeight

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"br" a écrit dans le message de
news:1b3601c3e01e$8b6b94b0$
Quel est le meilleur controle pour afficher une image (en
la redimensionnant tout en gardant les proportions) dans
les dimensions du contrôle. Quelles propriétés à
positionner pour ça ?
Merci


Avatar
Zoury
Salut Br! :O)

Tu peux y arriver assez facilement sans l'aide d'API...

Essai cette exemple :
'***
' Ajouter la composante Microsoft Common Control 6.0 (SP6)
' Form1
' 1 Image
' 1 PictureBox
' 1 Slider
Option Explicit

' Conserve la proportion de l'image
'
Private m_fProprotion As Single

Private Sub Form_Load()

' Le PictureBox sert à déterminer
' le rapport entre la largeur
' et la hauteur de l'image
'
' Pour y parvenir, nous utilisons
' sa propriété AutoSize qui lui
' permet de se remdimensionner à
' la grandeur de l'image qu'il
' affiche
'
' Nous n'avons pas besoin de voir
' le contrôle alors nous le masquons.
'
Picture1.Visible = False
Picture1.AutoSize = True

' Le contrôle Image nous permet
' d'afficher l'image
'
' Sa propriété Stretch permet
' d'ajuster l'image à la taille
' du contrôle.
'
' Nous devons donc agrandir
' ou diminuer la taille du
' contrôle en conservant les
' proportion de l'image
'
Image1.Stretch = True

' Charge l'image dans le PictureBox afin de
' déterminer sa taille
'
Set Picture1.Picture = LoadPicture("c:image.bmp")

' Redimensionne le contrôle Image en fonction
' des dimensions du PictureBox
'
Call Image1.Move(Image1.Left, _
Image1.Top, _
Picture1.Width, _
Picture1.Height)

' On affiche l'image du PictureBox
' dans le contrôle Image
'
Set Image1.Picture = Picture1.Picture

' On retire l'image du PictureBox afin
' d'économiser un peu de mémoire..
'
Set Picture1.Picture = Nothing

' On calcule la proportion de l'image
' La largeur diviser par la hauteur
'
m_fProprotion = Image1.Width / Image1.Height

' Le contrôle Slider nous permettra d'agrandir
' ou de diminuer la taille du contrôle Image
'
Slider1.Min = 0
Slider1.Max = Slider1.Width
Slider1.Value = Image1.Width

' Initialise la position des contrôles sur le formulaire
'
Call SetControlsPosition

End Sub

Private Sub Slider1_Change()

' Vérifie si la proportion à été définie
' (après le Form_Load) afin d'éviter
' une division par 0
'
If (m_fProprotion > 0) Then

' On redimensionne le contrôle Image
' en fonction de la taille sélectionnée
' à l'aide du slider..
'
Call Image1.Move(Image1.Left, _
Image1.Top, _
Slider1.Value, _
Slider1.Value / m_fProprotion)
End If
End Sub

Private Sub Slider1_Scroll()

' Vérifie si la proportion à été définie
' (après le Form_Load) afin d'éviter
' une division par 0
'
If (m_fProprotion > 0) Then

' On redimensionne le contrôle Image
' en fonction de la taille sélectionnée
' à l'aide du slider..
'
Call Image1.Move(Image1.Left, _
Image1.Top, _
Slider1.Value, _
Slider1.Value / m_fProprotion)
End If
End Sub

' Place les contrôles automatiquement
' sur le formulaire..
'
Private Sub SetControlsPosition()
Call Me.Move(330, 435, 11835, 6915)
Call Slider1.Move(0, 120, 11535, 255)
Call Picture1.Move(120, 480, 4560, 2310)
Call Image1.Move(120, 480, 4560, 2310)
End Sub
'***

je te poste le projet dans le message suivant..

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous

"br" wrote in message
news:1b3601c3e01e$8b6b94b0$
Quel est le meilleur controle pour afficher une image (en
la redimensionnant tout en gardant les proportions) dans
les dimensions du contrôle. Quelles propriétés à
positionner pour ça ?
Merci