Redimensionner une image (Me.Picture)

Signaler
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007
-
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007
-
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

Messages postés
256
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
20 mars 2013
1
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
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

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
Messages postés
256
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
20 mars 2013
1
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
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

Oui j'ai pensé tout de suite à çà :

AutoSize à false

AutoRedraw à true



et pourtant ca ne fonctionne toujours pas, je comprend pas sniff sniff
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

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
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

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 @+
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
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
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

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 ?
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

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 ?
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
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
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

Merci Daniel mais mon "Me" est un form MDI et je n'ai donc apparement pas acces à la méthode PaintPicture...Sniff Sniff
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
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
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

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