Rafraichissement fond d'écran

Résolu
maxxikilla972 - 16 mars 2013 à 12:24
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 - 16 mars 2013 à 16:48
Bonjour à tous,

Je travaille actuellement sur un projet, visant à faire un tableau de bord de voiture.
J'ai donc créé un tableau de bord sous photoshop, que je met en fond d'écran.
J'ai créé des aiguilles en format image, que je fais tourner grâce à une TrackBar et un petit programme. Les aiguilles sont placées dans des pictureBox, elles mêmes placées sur la tableau de bord qui est en arrière plan, le but étant de faire des images dynamiques !!

Les aiguilles tournent parfaitement bien, avec l'angle que je veux et tout.
Je les ai mises en transparence, sur le background, on y voit que du feu
A chaque inclinaison, l'image est enregistrée, supprimée, et réactualisée avec le nouvel angle, ce qui donne l'illusion qu'elle tourne.

Le petit hic, se situe au niveau du background. La transparence de la picturebox contenant l'aiguille disparaît dès qu'elle commence à tourner: ça me fait un gros carré gris dans laquelle l'aiguille tourne. Du coup, ma présentation tombe un peu à l'eau, car plus d'illusion que l'aiguille du tableau de bord est dynamique.

La solution, je pense, serait de rafraîchir le fond d'écran à chaque mini-rotation de l'aiguille. Mais je ne vois pas trop comment m'y prendre ...

J'espère avoir été clair dans mes explication, Merci d'avance pour votre aide

8 réponses

cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
16 mars 2013 à 13:01
Bonjour,

Travailles avec une image tampon dans laquelle tu charge une fois pour toute l'image de ton tableau de bord. picTampon.Picture = LoadPicture(chemin).
Bien sûr cette image doit avoir ses propriétés AutoRedraw à True et Visible à False.
A chaque changement d'angle tu effaces cette image et tu redisposes toutes les aiguilles.
Une fois cela fait, tu copies avec BitBlt cette image sur l'image visible et le tour est joué.
Ainsi la transparence se fera toujours sur les pixels d'origine et non sur des pixels modifiés. Ce qui est la cause de ton "gros carré gris"

Cheyenne
3
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
16 mars 2013 à 14:23
Re,

Il n'y a pas de différence, c'est la même chose, c'est une Picture. J'ai mis picTampon comme nom au lieu de Picture1. picTampon est le nom de la Picture.

Pourquoi pic ? parce que c'est le préfixe conventionnel de l'objet. C'est une bonne habitude à prendre que de "préfixer" les objets. A la lecture du code tu sais tout de suite à quel objet le code correspond.

Tu mets donc sur ta Form une autre Picture, c'est celle-là qui aura en fond l'image du tableau de bord et qui servira de tampon, d'où le nom. Tu peux la nommer Toto si tu veux, mais de préférence picToto.

Cheyenne
3
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
16 mars 2013 à 15:14
Re,
Mais comment accéder a AutoRedraw ??, je ne le trouve pas
Tu débutes en VB6 ou quoi ?

Regardes dans la fenêtre des propriétés relative à la Picture.

Ton image sera cachée, c'est sur celle là que tu dessines. Une fois toutes les aiguilles mises en place tu la copie sur l'image visible.

Je reviens sur le fait de mettre un préfixe aux objets. Supposons que tu as un label indexé nommé toto et que tu lui assignes comme Caption "Bonjour" et de plus sans indiquer la propriété:
 toto(i) = "Bonjour"
A la lecture du code tu ne sais pas si toto est un tableau ou un label.
toto(5).Caption  ' est mieux mais lblToto(5).Caption  '  encore mieux !
Toujours indiquer la propriété qui reçoit la valeur. Cela évite à VB6 d'interpréter ce que tu veux faire.

Cheyenne
3
maxxikilla972
16 mars 2013 à 14:06
Bonjour, merci pour ta réponse.
Je comprend globalement l'idée, mais pour la réaliser ...

Comment faire la différence entre l'image tampon et une image ?
Je peux déclarer le background en image tampon?

Le "picTampon" n'est pas reconnu par VB
0

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

Posez votre question
maxxikilla972
16 mars 2013 à 14:49
A oui d'accord !!!! j'ai cru qu'il s'agissait d'un élément spécifique comme Math ou quelque chose du même goût
D'accord, donc pas de soucis avec picTampon

Donc si je comprend bien, je dois supprimer le background ? et mettre l'image du fond en picturebox.
C'est ce que je fais, mais dans ce cas, j'ai plus l'option de mettre en transparence ... c'est à dire que j'ai les carrés avant même d'avoir fait quoi que ce soit ...

Peut etre que j'ai mal compris. Il faut coupler background + picture box ?
0
maxxikilla972
16 mars 2013 à 14:53
ah je pense avoir compris, c'est pour ca qu'il faut le set visible false ...
Mais comment accéder a AutoRedraw ??, je ne le trouve pas
0
maxxikilla972
16 mars 2013 à 15:58
Oui, en effet, j'ai commencé il y a une semaine.

Je connais la localisation des propriété de la picture. Mais aucune trace d'Autodraw dedans...

Je vais essayer ce que tu m'a dit, je te tiens au courant.

Merci pour ton aide et ta patince
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
16 mars 2013 à 16:48
Re,

Ok, tu débutes..
.Je connais la localisation des propriété de la picture.
Mais aucune trace d'Autodraw dedans...
Si, c'est la troisième ligne dans l'onglet "Alphabétique" et dans l'onglet "Par catégorie"
la première à la rubrique "Comportement".
Merci pour ton aide et ta patience
Pas de problèmes...

Cheyenne
0
Rejoignez-nous