Rétrécir une image dans un Picturebox en gardant les proportions [VB5] - Programmation
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
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.
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)
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...).
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
@+
Marsh Posté le 06-12-2001 à 13:25:35
Merci CARBON_14 , je vais de suite tester cela.
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).
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.
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
@+
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