Picture d'un form [Résolu]

Signaler
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
-
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
-
Salut à tous,

J'ai un formulaire de base
Dans lequel j'ai une image intégrée dans la propriété PICTURE

Je voudrais que lorsqu'un utilisateur à une résolution plus grande que 1024x768
il m'agrandisse l'image de fond du formulaire pour qu'elle FIT TO FORM

Sans faire de magouille en ajoutant un pictureBox qui couvre le form
et sans remplacer l'image par une image plus grande en fonction de la résolution.

Est-ce possible?

Merci pour votre aide
TBBUIM

12 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Sans aucun contrôle supplémentaire (en reprenant le code de Gorgot) :

Dim oPicture As stdPicture
Set oPicture = Me.Picture
Me.PaintPicture oPicture, 0, 0, me.ScaleWidth, me.ScaleHeight
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
7
J'ai trouvé la solution...

Pour que la picture du form soit à la taille du form à l'ouverture de ce dernier en Maximized, il faut mettre ce code dans les fonctions suivantes:

Form_initialize, Form_Paint et Form_load
   Me.PaintPicture Me.Picture, 0, 0, Screen.Width, Screen.Height

et dans le Form_Resize
Me.PaintPicture Me.Picture, 0, 0, Me.ScaleWidth, Me.ScaleHeight

Et là ça marche! Mais si on ne met pas ce code
dans tous les Form que j'ai cité plus haut, ça ne marche pas!
TBBUIM
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
7
Super, c la réponse que j'attendais ^^

Private Sub Form_Resize()
    Me.AutoRedraw = True
    Me.PaintPicture Me.Picture, 0, 0, Me.ScaleWidth, Me.ScaleHeight
    Me.AutoRedraw = False
End Sub

Merci beaucoup les gars.
TBBUIM
Messages postés
386
Date d'inscription
samedi 4 octobre 2008
Statut
Membre
Dernière intervention
19 février 2018
2
Bonjour,

VB est pas fait pour le graphique, donc si vous voulez faire cela ce sera pas avec comme vous dites une "magouille", mais avec un peu de code source de zoom... ou avec une "image" et non un "picturebox".

A++
[Gally Home Corp]
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
27
n'importe quoi !!!

avec une image ce serait plus simple


Dim pic As StdPicture


Private Sub Form_Load()

   Set pic = Picture1.Picture

   Picture1.Appearance = 0

   Picture1.BorderStyle = 0

End Sub


Private Sub Form_Resize()

    Picture1.Move 0, 0, ScaleWidth, ScaleHeight

    Picture1.PaintPicture pic, 0, 0, ScaleWidth, ScaleHeight

End Sub

Daniel
Messages postés
386
Date d'inscription
samedi 4 octobre 2008
Statut
Membre
Dernière intervention
19 février 2018
2
Bonjour Danel,

Donc j'ai bien raison vu que tu mets du code source et cela peu etre pris par lui pour une magouille.

Avec une "image" tu met la taille x et y et si tu as bien mis les paramètres cela ce redimentionne automatiquement...

Sinon si tu veu j'ai des codes complet sur le graphique et je sais que cela n'est pas possible sans ligne de code...

A++
[Gally Home Corp]
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
7
Merci Daniel,

seuleument, j'ai bien précisé sans utiliser de PictureBox

donc uniquement avec la propriété Picture du form =>Me.Picture

TBBUIM
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
7
c cool mais ça marche seuleuement si je resize la form
Je lance la form en Maximized et là, la picture ne suit pas le form?? :'(

Ce qui est en fait le plus important...

J'ai essayé:
Me.PaintPicture oPicture, 0, 0, Screen.Width, Screen.Height

Mais ça marche pas :'(
TBBUIM
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Tout dépend où est-ce que tu as placé ce code ! Mets le dans le resize de ta form, ca devrait fonctionner.
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
27
ben si ça marche, si tu met AutoRedraw à True


Dim oPicture As StdPicture


Private Sub Form_Load()

    Set oPicture = Me.Picture

End Sub


Private Sub Form_Resize()

    Me.AutoRedraw = True

    Me.PaintPicture oPicture, 0, 0, Me.ScaleWidth, Me.ScaleHeight

    Me.Picture = Me.Image

    Me.AutoRedraw = False

End Sub

Daniel
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Je déconseille fortement d'utiliser le Form_Paint pour retracer l'image de fond, active plutôt l'autoredraw, ce sera beaucoup plus optimisé !
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
7
Attention, cette dernière solution bug si l'utilisateur resize le form de manière à ne rien laisser s'afficher
Dans ce cas, il faut rajouter un on error goto, ou vérifier que Me.scale n'est pas null
TBBUIM