Déplacements simultanés

cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 - 1 avril 2012 à 16:37
gregorycaloin Messages postés 8 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 2 mai 2012 - 2 mai 2012 à 00:09
Salut à tous,

Voici mon soucis: J'essaye de faire une espèce de scrollbar personnalisée (enfin une verticale et une horizontale pour être précis). Jusque là tout va bien.
Cependant, j'essaye de lui mettre de la transparence, alors qu'elle se situe au dessus d'une pictureBox. Hors, la transparence est seulement simulée, et c'est une partie du parent qui est peint sur le fond du contrôle, donc la pictureBox qui se trouve entre les deux est "transpercée".
Qu'à cela ne tienne, j'ajoute mes composants aux contrôles de la pictureBox plutôt qu'à ceux de la form.
Oui mais seulement ces scrollbars permettent de déplacer cette pictureBox elle-même, hors je veux que celles-là restent fixes par rapport à l'application.
Donc, "Pas de soucis" me dis-je, lors d'un évènement "LocationChanged" de la picture, je déplace les scrolls de manière inverse.

Seulement, l'évènement LocationChanged se produit APRÈS le déplacement, d'où un effet de clignotement très désagréable.

Savez vous comment effectuer deux déplacements "en même temps" (c'est à dire avant de rafraîchir l'affichage) ?

Merci d'avance

5 réponses

cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
2 avril 2012 à 14:23
Sinon, je crois qu'en VB6 il était possible de le faire en mettant la propriété autoredraw de la forme à false le temps de changer les valeurs puis de la restaurer.

N'y a-t-il pas un équivalent en .Net ? Ça me paraîtrait surprenant que non
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
3 avril 2012 à 19:56
Je me permet de faire remonter une fois ce sujet au cas où quelqu'un ayant la réponse ne l'aurait pas vu.
0
gregorycaloin Messages postés 8 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 2 mai 2012
1 mai 2012 à 14:31
J'imagine que si tu veux que tes scrollbars restent fixes, mieux vaudrait déjà les placer sur ta form.
L'aspect qui me dérange ici c'est que tu veuilles utiliser des scrollbars pour relocaliser un picturebox.. Oups
Je n'ai peut-être pas tout compris, mais je pense qu'un panel avec ton picturebox dedans serait plus adéquat.
Une capture de ta form avec ses contrôles, nous permettrait de mieux comprendre et donc d'apporter une réponse adéquate.
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
1 mai 2012 à 19:31
Bonjour et tout d'abord merci de t'être penché sur mon problème.
Mais en fait ... mh, ce n'est pas si dérangeant. Enfin je réexplique quand même au cas où tu as une solution (c'est toujours bon à prendre).

Voilà une image pour visualiser.
Les petits trucs discrets à droite et en bas sont des scrollbar personnalisées (donc en partie transparentes comme tu peux voir).

Pour mieux expliquer mon problème: J'ai donc une image plus grande que son conteneur (et elle ne doit pas être réduite). J'ai donc ajouté des scrollbar pour pouvoir voir les parties cachées de l'image (en déplaçant la picturebox). Ces scrollbar, au départ, étaient placées comme tu le conseilles sur la form. Cependant, j'ai voulu changer leur aspect pour ne pas garder le style windows par défaut qui ne convenait pas. Et c'est là qu'est arrivé mon problème, car la transparence en VB est "simulée": l'appli se contente de peindre le fond du parent sur les zones transparentes. On voyait donc le fond de la form "à travers" ma picturebox et ce n'est pas ce que je cherchais. J'ai donc inclus les scrollbar dans le contrôle picturebox, en les déplaçant inversement au déplacement de celle-ci, mais voilà, comme elles ne se déplacent qu'après le mouvement de leur parent, cela donne cet effet de clignotement que j'ai expliqué dans mon premier message.

Voilà toute l'histoire, en espérant avoir été assez clair (c'est pas évident à expliquer).
0

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

Posez votre question
gregorycaloin Messages postés 8 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 2 mai 2012
2 mai 2012 à 00:09
Merci pour cette bien meilleure explication.
Je comprends désormais la présence et le but de tes scrollbars sur le picturebox.
Cependant et si j'ai compris, les 2 scrollbars sont des contrôles dynamiquement crées (rectangles arrondis en fait..) ou encore des UserControls?
Si c'est le cas, tu peux leur mettre n'importe quelle couleur depuis le code, non? Ou alors, je n'ai pas trop vu où s'applique réellement la transparence?
Pour ton souci de clignotement, essaie de voir s'il y a une possibilité avec le doublebuffering (Je dis ça sans avoir vraiment vérifié)
0