2010-02-08 15 views
1

J'utilise la bibliothèque de cartes NPlot pour dessiner plusieurs tracés illustrant les fluctuations de signal. Les parcelles sont insérées l'une dans l'autre dans un flowlayoutpanel1. L'axe des x est l'heure. Le y est la valeur du signal. J'ai ajouté une barre de suivi en bas, le long de l'axe des x. Lorsque l'utilisateur déplace la trackbar, la valeur de chaque signal est affichée quelque part (par rapport à la position de la trackbar).Dessiner une seule ligne directrice sur plusieurs NPlots ou une autre solution

Tout cela est déjà fonctionnel.

On m'a demandé d'ajouter un moyen visuel pour illustrer l'heure exacte de la barre de suivi. Ils veulent une sorte de ligne verticale qui se déplacerait avec la barre de suivi, sur tous les Nplots. Cependant, ils sont ouverts à des alternatives.

J'ai essayé de tracer la ligne mais il est difficile de tracer en fonction de la position de la barre de contrôle. En outre, il finit par être tiré derrière les Nplots.

J'ai également essayé de dessiner une grille statique sur le flowpanel mais les Nplots ne sont pas transparents, et mon patron n'aime pas que chaque plot ait une grille individuelle à des fins esthétiques.

À ce stade, je suis ouvert à toutes les suggestions "out-of-the-box", ou des corrections sur ma mise en œuvre. Je suis autodidacte en C# donc je n'ai rien fait de tel auparavant.

Aidez s'il vous plaît!

EDIT: J'ai obtenu quelque chose de légèrement meilleur en utilisant une étiquette avec une bordure, l'étirant pour être grand et ayant une largeur de 1. Cela crée une ligne qui va au-dessus de tous les autres contrôles. Maintenant, mon plus grand défi est de calculer la position du pointeur de la barre de navigation pour faire correspondre la ligne ...

Répondre

0

Après beaucoup de bidouillage, j'ai trouvé que la seule façon d'avoir une ligne dessinée sur tous les autres contrôles était de ne pas utiliser la ligne graphique, car les contrôles placés en haut n'étaient pas transparents et je ne pouvais pas accéder à leur composant graphique (un contrôle importé n'était pas une classe .NET).

J'ai fini par aller avec la solution EDIT, j'ai pris une étiquette avec une bordure et j'ai mis la largeur à 1, créant une simple ligne au lieu d'une boîte.

La formule de position nécessitait beaucoup de réglages fins, le chemin à parcourir était de calculer (estimer) la largeur entre deux graduations de la barre de suivi et d'ajouter un léger décalage pour le contrôle lui-même. En utilisant la propriété Value du pointeur de traback, je pourrais calculer la position de l'étiquette/ligne pour qu'elle suive le pointeur de la barre de suivi. Il y a un décalage minuscule parfois formé mais pas bien vu à l'oeil nu.