Adaptation de la grandeur des image à un controle image sans perdre les pro

Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 - 20 juin 2003 à 09:05
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 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

4 réponses

SibosisITS Messages postés 72 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 20 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.

@++ et bon coding...

(; Sibo ;)
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
20 juin 2003 à 10:09
ouais, mais la on est obligé de charger l'image avant kel s'affiche(avec la taille désirée) pour prendre ses mesures?
0
Delbeke Messages postés 200 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 18 novembre 2005
21 juin 2003 à 00:11
J'ai écrit un composant image amélioré qui fait çà, plus d'autre petites choses sympa

http://www.delbeke.fr/informatique/index.html

Chercher DiExtImg.ocx pour Vb5 et Di6ExtImg pour Vb6
Source fourni !
:)
Jean-Luc
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
22 juin 2003 à 20:01
mercui bien, j'irai voir...
0
Rejoignez-nous