Redimensionner une image (Me.Picture)

cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007 - 4 juil. 2005 à 15:48
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007 - 6 juil. 2005 à 09:15
Bonjour,



j'ai une image que je charge dynamiquement en faisant : Me.Picture = loadPicture(cheminImage)

J'aimerais pouvoir la redimensionner "à ma guise", comment puis-je faire ?

J'ai essayé : Me.Picture.Width = Me.Picture.Width / 2 (pareil pour Height) et ca ne fonctionne pas !!!



Merci d'avance

13 réponses

guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
4 juil. 2005 à 16:18
Salut à toi, Ô programmeur !

MaPicture.move Gauche,Haut,Largeur,Hauteur

Tu n'as plus qu'à paramètrer avec les valeurs que tu veux !!

Et voilà !

Bonne prog
@+

Olivier
0
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
4 juil. 2005 à 16:59
Merci gars.

Ca change bien le Height et le Width (je fais un Debug.print avant et
apres et je vois que ca l'a bien modifié) mais a l'ecran ca ne change
rien et je ne comprend pas pourquoi. Tu n'aurais pas une idée ? Peut
etre une propriété de la pictureBox a modifier ?

Merci d'avance
0
guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
4 juil. 2005 à 17:11
Salut,

Essaye d'enlever la propriété AutoResize et donc de la mettre à False, en revanche laisse la propriété AutoRedraw à True !

Et normalement cela devrait être bon !

@+

Bonne Prog

Olivier
0
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
4 juil. 2005 à 17:21
Oui j'ai pensé tout de suite à çà :

AutoSize à false

AutoRedraw à true



et pourtant ca ne fonctionne toujours pas, je comprend pas sniff sniff
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
4 juil. 2005 à 17:23
Bon en fait si ca marche, la pictureBox (le controle) est bien modifié
mais c'est l'image a l'interieur qui n'est pas redimensionnée en fait.

Il y a bien possibilité de redimensionner l'image a l'interieur en fonction du pictureBox ? SI oui comment faire stp ?



Merci encore
0
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
4 juil. 2005 à 18:03
Et je suis en train de me demander, là il s'agit d'une pictureBox mais j'ai aussi un Me.Picture (d'une Form MDI) a redimensionner et là le .Move ne fonctionne pas je suppose ? Existe t'il une méthode pour redimensionner un Me.Picture ? Car sinon c'est même pas la peine de tenter quoi que ce soit car il faut à tout prix que les deux soit redimensionnés...

Merci d'avance
Je m'en vais du boulot là.
J'espere avoir une réponse pour demain matin, ca serait cool, en tout cas bonne soirée @+
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
4 juil. 2005 à 22:04
pour une image il y a la propriété Stretch.

pour la Forme ou une PictureBox, il y a la fonction PaintPicture, mais il faut d'abord que l'image ai été chargée auparavant.

il y a aussi les API's qui le font.


Daniel
0
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
5 juil. 2005 à 09:26
Peux tu m'indiquer les API à utiliser STP ?
Et sinon pour mon image qui est chargée en "fond d'ecran" (i.e dans le Me.Picture), comment la redimensionner ?
0
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
5 juil. 2005 à 11:27
Bon du coup j'ai remplacé mes pictureBox par des Image en utilisant la methode Move et ca va bien mieux car l'image à l'interieur s'ajuste automatiquement donc mon probleme est résolu à 50%.
En effet, il me reste à trouver comment redimensionner mon image chargée en fond d'ecran (Me.Picture de ma MDI), utilisation d'une API peut etre ?
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
5 juil. 2005 à 11:43
Dim pic As StdPicture

Dim Sw As Long

Dim Sh As Long

Dim Dw As Long

Dim Dh As Long



'charger l'image quelque part

Set pic = LoadPicture("c:\...\NomduFichier.bmp")



'retrouver ses dimensions

Sw = ScaleX(pic.Width, vbHimetric, Me.ScaleMode)

Sh = ScaleY(pic.Height, vbHimetric, Me.ScaleMode)



'calculer les nouvelles dimensions

If Sh / Sw > Me.ScaleHeight / Me.ScaleWidth Then

Dh Me.ScaleHeight: Dw Me.ScaleHeight * Sw / Sh

Else

Dw Me.ScaleWidth: Dh Me.ScaleWidth * Sh / Sw

End If



'copier l'image quelque part

Me.PaintPicture pic, (Me.ScaleWidth - Dw) / 2, (Me.ScaleHeight - Dh) / 2, Dw, Dh


Daniel
0
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
5 juil. 2005 à 12:46
Merci Daniel mais mon "Me" est un form MDI et je n'ai donc apparement pas acces à la méthode PaintPicture...Sniff Sniff
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
5 juil. 2005 à 13:04
ben tu met une PictureBox, apparence Flat , BorderStyle à zéro et même taille que la Forme.

c'est possible ou pas ?





L'API en question c'est StretchBlt, fonctionne de la même manière que
PaintPicture, un peu plus rapide certes, mais à mon avis moins
performant que PaintPicture dans le cas de réduction.



Private Declare Function StretchBlt Lib "gdi32"
(ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As
Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long,
ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long,
ByVal dwRop As Long) As Long


Daniel
0
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
6 juil. 2005 à 09:15
Et non ca marche pas car en fait j'ai besoin que mes fenetres filles soit au dessus de l'image (et donc de la pictureBox) car l'image sert en quelque sorte de fond d'ecran à la maniere d'un bureau Windows.
Est t'il possible de faire çà avec une pictureBox ? (Question : pourquoi je n'arrive pas à dessiner un contrôle Image dans ma fenetre MDI ?)

Merci beaucoup beaucoup d'avance
0
Rejoignez-nous