IMAGE DE FOND CENTRÉE SUR UNE MDIFORM

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 28 nov. 2006 à 23:38
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 1 déc. 2006 à 11:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40498-image-de-fond-centree-sur-une-mdiform

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 déc. 2006 à 11:53
Voilà donc...

Plus aucun problème de différences entre une machine et l'autre ne devrait maintenant être présent.

Notre ami Moustachu, dorénavant co-signataire de cette source, a trouvé l'astuce complémentaire (voir la présentation modifiée) qui a su résoudre ce problème.

Je salue l'esprit d'équipe de Moustachu et le remercie vivement, tant pour moi qu'au nom de tous.
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
30 nov. 2006 à 11:54
Bonjour Moustachu et merci de ton intérêt.

Malheureusement, avec ton code, c'est cette fois-ci sur ma machine que çà ne marche pas du tout, avec un message d'errur carrément en entrée si l'image de fond n'est pas installée "en dur" (fenêtre des propriétés) dans image1. Explication : l'activate provoque un 1er rezize avant le chargeùent de l'image et on a donc une image vide et donc invalide pour le paintPicture.

Si maintenant, je définis en dur image1, l'image apparait bien au fond une fraction de seconde, mais disparait aussitôt sans que je puisse en déterminer la raison ...

Explication possible : le resize est conduit de a à z et donc toujours en cours depuis a jusqu'à z, passant donc par a (se déclenchant), puis par b (se déclenchant également) etc... et provoquant donc une série d'image1 visible, invisible, visible à nouveau etx... et le tout s'arrête dans un état qui va dépendre des entrées/sorties, sans que l'on puisse réellement contrôler la dernière... ! dur dur...

D'une machine à l'autre, d'un état de la machine à l'autre, dans de telles conditions, les surprises sont là : avec mon code (on l'a vu) et avec ta proposition (on le voit aussi).

Conclusion : il va me falloir trouver un truc complémentaire. J'ai déjà une idée que je testerai sur ma machine d'abord. Accepterais-tu (puisque nous avons la chance d'avoir en toi un possesseur de machine où les reactions sont différentes de la mienne) de tester, avant que je ne la propose, une nouvelle modification ? Si oui, nous pourrions le faire par MP pour ne pas trop alourdir iici.
Fais-moi savoir si tu en es d'accord et je t'enverrai alors par MP la modif à tester.
Je te remercie beaucoup à nouveau, ami Moustachu.
Profil bloqué
30 nov. 2006 à 10:45
Bonjour,
Désolé, je peux pas essayé.
C'est du vb6 et j'ai 2005 express.
J'avais pas capté.
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
30 nov. 2006 à 09:46
Avec ça :
Private Sub MDIForm_Resize()


Image1.Visible = True
Picture1.Visible = True
Me.Picture = LoadPicture
Picture1.Height = Me.Height

Picture1.Picture = LoadPicture
Picture1.PaintPicture Image1.Picture, (Me.Width / 2 - Image1.Width / 2), (Me.Height - (Image1.Height)) / 2, Image1.Width, Image1.Height, 0, 0, Image1.Width, Image1.Height
Picture1.Picture = Picture1.Image

Me.Picture = Picture1.Picture
Image1.Visible = False
Picture1.Visible = False

End Sub

Ca marche.

++
Moustachu
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
30 nov. 2006 à 09:26
Bon,
Il semble donc que les réactions ne soient pas les mêmes entre une machine et l'autre.
Peut-être des problèmes de rapidité de rafraichissement différentes ?
J'attends encore un peu et, si le problème est présent sur d'autres machines, utiliserai des APis pour que ça aille plus vite.
Merci à ceux qui ont bien voulu tester et me renseigner.
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
30 nov. 2006 à 08:59
Bonjour,

Il y a effectivement pour moi des problèmes lors du redimensionnement de la fenêtre. L'image de fond ne se rafraichit pas. En revanche, en minimisant, puis maximisant la fenêtre, c'est Ok en supprimant les DoEvents. En déplaçant la fenêtre "child", l'image se redessine.

>>CHAIBAT05, Je ne crois pas que l'auteur de la source t'ai accusé d'avoir bidouillé sa source pour l'emm*rder et je ne vois pas trace de mauvaise fois!

++
Moustachu
Utilisateur anonyme
29 nov. 2006 à 20:26
rien de méchant...c'est juste à cause des 2 derniers Doevents dans la procédure Private Sub MDIForm_Resize()
sinon le code marche tres bien.....++
Profil bloqué
29 nov. 2006 à 19:05
Bon, j'ai une réunion, mais je fait le test au pire demain matin.
Je vous tiens au courant.
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
29 nov. 2006 à 12:13
Bon....
Si quelqu'un d'autre pouvait tester et nous dire, ce serait bien...
Je n'ai pas ce problème, malgré tous mes tests...
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
29 nov. 2006 à 11:49
j' ai pas touché à ton code.
Pour Form2, il s' agit bien de ta Child ()
c' était une erreur de frappe comme il en arrive toujours...

Retour vers le passé, question de changer le cours de l' histoire
....
Salut,
Trop beau pour être vrai...!
Mais que veux tu ...la réalité s en "fiche" toujours des éspérances...
Résultat :
Image tronquée ou en double (voir les deux à la fois)quand la Mdi
est Maximizée...
Pire encore quand la fenêtre fille est déchargée. Avec elle elle au moins on
pourrait sauvé la situation en balayant la surface de la MDI.
Encore faut il la tenir par le bout du nez et la balader
dans tout les sens

S' il y' a un démenti, je ne dis pas,
mais moi je crois ce que je vois.

Connaissant ton niveau, il y' a sûrement une explication à ça.
C' est pourquoi je n' ai pas mis de note...
Pour l' instant.

A+

chaibat
.....

Et c' est de mauvaise fois que de croire que j' ai biduoillé
ta source juste pour t' emmerder
J' ai passé l' âge pour ça; en plus je n' ai pas le temps


PS: je ne répond pas aux messages personnels
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
29 nov. 2006 à 10:36
Je lis et relis ton commentaire :
Une chose appelle mon attention :

"Image tronquée ou en double (voir les deux à la fois)quand la Mdi
est Maximizée..."

N'aurais-tu pas (ceci expliquerait celà) oublié de remettre systématiquement à vide la PictureBox ?
Cette ligne de code est importante et ne doit bien évidemment pas être supprimée : !!!

" Picture1.Picture = Nothing " <<<<<<==========

Si tu la supprimes, tu as bien évidemment des trucs bizarres ..... puisque la picture se dessine alors sur elle-même..... !!!
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
29 nov. 2006 à 09:07
en....
Je viens de faire une bonne centaine de "maximisations" puis de retours à "la normale" sans parvenir au phénomène que tu dis avoir.
Et c'est quoi Form2 ? D'où sort-elle ? on dirait que tu as "arrangé à une sauce différente" (et je ne sais laquelle) et que c'est cette sauce (que j'ignore) qui ne va pas !
Si c'est celà, une "adaptation" que tu as tentée sans succès, il convient d'ouvrir une discussion sur le forum normal de VB et d'y joindre un exemple simple reproduisant ton problème. Je verrai alors où est situé ce problème.
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 nov. 2006 à 23:38
Salut,
Trop beau pour être vrai...!
Mais que veux tu ...la réalité s en "fiche" toujours des éspérances...
Résultat :
Image tronquée ou en double (voir les deux à la fois)quand la Mdi
est Maximizée...
Pire encore quand Form2 est déchargée. Avec elle elle au moins on
pourrait sauvé la situation en balayant la surface de la MDI.
Encore faut il la tenir par le bout du nez et la balader
dans tout les sens

S' il y' a un démenti, je ne dis pas,
mais moi je crois ce que je vois.

Connaossant ton niveau, il y' a sûrement une explication à ça.
C' est pourquoi je n' ai pas mis de note...
Poour l' instant.

A+

chaibat
Rejoignez-nous