Adaptation de la grandeur des image à un controle image sans perdre les pro
Nargzul
Messages postés438Date d'inscriptionvendredi 9 mai 2003StatutMembreDernière intervention26 juillet 2007
-
20 juin 2003 à 09:05
Nargzul
Messages postés438Date d'inscriptionvendredi 9 mai 2003StatutMembreDernière intervention26 juillet 2007
-
22 juin 2003 à 20:01
Je dois m'occuper d'un album photo, et pour cela, j'aimerais faire un petit prog, comme ce sont des grande photos et qui n'ont pas toujours le meme format, ou la meme orientation, j'ai voulu mettre un petit controle image avec la propriétés strech activé, seulement voila, ca déforme complètement la photo, en ne gardant que la grandeur du cadre... après j'ai pensé qu'a la lecteur de l'image, on pourrait trouver ses dimension et pis après on se serait débrouillé pour faire un truc proportionnel, mais g pas trouvé une seule fonction de ce type...
Help, please....
je suis a court d'idée, le but c'est que la photo rentre dans un cadre, avec les proportion de la photo...
merci
A voir également:
Adaptation de la grandeur des image à un controle image sans perdre les pro
SibosisITS
Messages postés72Date d'inscriptionmardi 26 février 2002StatutMembreDernière intervention20 juin 2003 20 juin 2003 à 09:48
Voici la solution la plus courante dans VB.
Pour l'exemple ci-après, je considère un contrôle image appelé Image1 dans lequel est chargé l'image souhaitée. La fonction ci-après retroune le rapport Largeur/Hauteur. Une fois que tu as ce rapport, je suppose que tu peux te débrouiller. Déclare cette fonction où tu veux : elle prend en arguments tous les objets dont elle a besoin (c'est à dire un seul : l'image).
Public Function GetDimRatio(ByRef pic As IPictureDisp) As Double
If pic Is Nothing Then
'Si pic ne contient aucune image, la fonction retourne -1.
GetDimRatio = CDbl(-1)
Else
'Sinon, retourne le rapport largeur/hauteur
GetDimRatio = CDbl(pic.Width)/CDbl(pic.Height)
End If
End Function
En utilisant le controle Image1, on peut appeler cette fonction de la manière suivante :
...
Dim Ratio As Double
...
Ratio = GetDimRatio(Image1.Picture)
REMARQUES :
* les propriétés Width et Height de l'objet picture contiennent des dimensions dans le système HYMETRIC. Pour obtenir ces dimensions en pixels, il faut les convertir avec les méthodes suivantes :
'Pour la largeur :
X = Object.ScaleX(Width, vbHymetric, vbPixels)
'Pour la hauteur :
Y = Object.ScaleY(Height, vbHymetric, vbPixels)
Où Object représente un Form ou un PictureBox.
* les convertions explicites de types (à l'aide des fonction CDbl, CSng, Clng, CInt, etc.) sont vivement recommandées en cas de doute sur le type d'un élément. Bien que VB effectue des convertions automatiques, les convertions explicitent sont plus rapides, et ne ralenti pas lorsque le type d'origine est identique au type voulu.