[VB5] Rétrécir une image dans un Picturebox en gardant les proportions

Rétrécir une image dans un Picturebox en gardant les proportions [VB5] - Programmation

Marsh Posté le 05-12-2001 à 18:49:22    

Salut à tous,
Je souhaiterais pouvoir insérer des images dans un picturebox de taille fixe. Et si l'image est plus grande, qu'il me la rétrécisse tout en gardant les proportions Hauteur/Largeur de l'image d'origine.
Si vous avez un code source ou un lien pour un composant VB faisant cela, ça me serais très utile.
Merci d'avance
@+


---------------
Rick The Alone :D
Reply

Marsh Posté le 05-12-2001 à 18:49:22   

Reply

Marsh Posté le 06-12-2001 à 02:36:39    

Un petit Up
Bon j'ai vu que pour picturebox c'est pas possible alors si vous avez une autre soluce merci d'avance


---------------
Rick The Alone :D
Reply

Marsh Posté le 06-12-2001 à 08:48:20    

salut,
 
je sais pas comment on fait en VB (waw je penserais pas ke je dirais ça un jour !!!), mais en Delphi, il faut mettre
 
Image1.stretch := True;
 
En VB ça devrait ressembler.


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 06-12-2001 à 12:50:03    

juju_le_barbare a écrit a écrit :

[...] mais en Delphi, il faut mettre
Image1.stretch := True;




 
pour la garder proportionnelle il y a aussi un attribut "Proportional" (uniquement à partir de Delphi 6)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 06-12-2001 à 13:21:51    

Si y a pas de moyens "directs, l'API StretchBlt sait faire.
 
StretchBlt function copies a bitmap from a source rectangle into a destination rectangle, stretching or compressing the bitmap to fit the dimensions of the destination rectangle, if necessary. Windows stretches or compresses the bitmap according to the stretching mode currently set in the destination device context.  
 
BOOL StretchBlt(
    HDC hdcDest, // handle of destination device context  
    int nXOriginDest, // x-coordinate of upper-left corner of dest. rect.  
    int nYOriginDest, // y-coordinate of upper-left corner of dest. rect.  
    int nWidthDest, // width of destination rectangle  
    int nHeightDest, // height of destination rectangle  
    HDC hdcSrc, // handle of source device context  
    int nXOriginSrc, // x-coordinate of upper-left corner of source rectangle  
    int nYOriginSrc, // y-coordinate of upper-left corner of source rectangle  
    int nWidthSrc, // width of source rectangle  
    int nHeightSrc, // height of source rectangle  
    DWORD dwRop  // raster operation code  
   );  
 
Y a peut-être exemples intrinsèques sur site dédié à VB (j'ai pas l'URL en tête, Cf chercher sur le forum...).

Reply

Marsh Posté le 06-12-2001 à 13:24:02    

Tout d'abord merci pour vos réponses. Mais en utilisant le code suivant :
Private Sub Command1_Click()
chemin1 = App.Path
chemin2 = "\test.jpg"
chemin = chemin1 + chemin2
Dim objPic As Picture
Set objPic = LoadPicture(chemin)
Image1.Stretch = True
Image1.Picture = LoadPicture(chemin)
End Sub

 
Cela me réduis bien l'image au format du controle Image mais ça ne me garde pas les proportions de l'image d'origine.
 
De plus j'ai pas trouvé pour l'équivalent de "proportionnal" sous VB5 et en plus.
 
Donc je suis au même point
 
@+


---------------
Rick The Alone :D
Reply

Marsh Posté le 06-12-2001 à 13:25:35    

Merci CARBON_14 , je vais de suite tester cela.


---------------
Rick The Alone :D
Reply

Marsh Posté le 06-12-2001 à 14:43:25    

Pour le code de stretching, vu que c'est plus "léger" au niveau code, il faudrait peut-être essayer de trouver les dimensions de l'image (en la chargeant sans l'afficher, ou dans zone non visible) voire trouver une fonction pour ça.
 
Connaissant la taille dispo maximale, il faut réajuster la hauteur ou la largeur du CONTENEUR pour que le stretch soit "parfait".
Image.Width, Image.Height (ou qq chose comme cela, ai oublié VB).

Reply

Marsh Posté le 06-12-2001 à 14:54:20    

j'ai utilisé l'API StretchBlt. Ca marche mais la photo, une fois rétrécie "bave"  :( Comme si la palette de couleur n'était pas réspectée. :heink:  
Je vais donc tester ta 2ème méthode... Mais demain, car je suis debout depuis 2h du mat (boulot oblige) et là je fatigue un peu...
 
Encore merci
@+


---------------
Rick The Alone :D
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed