Question

Je conçois (pas la programmation) un programme de visionneuse de séries de données pour les données médicales, en utilisant C # / WPF. Il y a un panneau principal qui montre les données, avec la fonctionnalité PAN / zoom de souris commune (casserole avec traînée gauche, zoom horizontal avec défilement, ajustement automatique vertical avec double clic, sélection avec traînée droite).

Le problème est: j'ai besoin d'une grille verticale et horizontale avec des dirigeants en haut / à gauche, similaires à ceux observés dans l'édition audio (Goldwave, Audacity), la cartographie (gpstrackmaker) et les programmes d'ilustration (Photoshop, Inkscape). En outre, ces dirigeants sont même configurables dans la plupart des API de tracé (MATLAB, GNUPLOT, MATPLOTLIB) et même des programmes Office (Excel, Calc).

La principale requise, en plus d'être toujours alignée et mise à l'échelle au contenu, est d'avoir un algorithme "anti-contrecluls" qui ne fait que des étiquettes de tick avec la granularité maximale possible sans que les étiquettes "frappent" ou se cachent.

Vous trouverez ci-dessous une image montrant deux niveaux de zoom du même dessin sur Inkscape. La première rangée affiche chaque cent étiquettes. La deuxième rangée affiche chaque étiquette de décennie.

La question est: "Puisque cela (la résolution automatique des dirigeants de visualisation) semble être un problème résolu dans de nombreux programmes, comment dois-je rechercher / quelles sont les résouces / tutoriels disponibles afin que je puisse spécifier et mettre en œuvre un tel contrôle qui convient mes besoins?"

J'apprécierais toute suggestion ou exemple, de préférence en C #, mais pourrait être dans n'importe quelle langue.

enter image description here

Était-ce utile?

La solution

  • W = Protetion visible du souverain
  • X = plage (droite-gauche) représenté par w
  • w = largeur d'étiquette

n = W/w (Nombre maximum d'étiquettes que vous pouvez afficher)

x = X*w/W (plage minimale entre deux étiquettes)

Ensuite, vous devez tourner X à une valeur plus grande et plus fraîche 1, 2 ou 5 dans n'importe quelle ampleur.

Par exemple

  • x=18.4 => x1=20
  • x=539 => x1=1000

w1 = x1/X*W (largeur d'étiquette ou espace entre les tiques)

n1 = W/w1 (Nombre de tiques)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top