2010-05-28 6 views
2

J'ai un textobj Zedgraph que je veux placer toujours dans la même position x, y (image ASP.NET). J'ai remarqué que le texte ne montre pas toujours dans la même position x de départ. Il change en fonction de la longueur du texte. J'ai essayé d'avoir le texte pour avoir la même longueur en le remplissant d'espaces. Cela a aidé un peu mais le résultat n'est pas toujours cohérent. J'utilise PaneFraction pour coordType.Zedgraph textobj X l'emplacement dépend de la longueur du texte?

Quelle est la méthode appropriée pour avoir toujours un morceau de texte dans la même position x. J'utilise textobj comme titre car la propriété du titre natif apparaît toujours centrée et j'ai besoin que mon titre soit aligné sur le graphique.

Répondre

0

Utilisez-vous ce constructeur?

TextObj(text, x, y, coordType, alignH, alignV) 

Sinon, assurez-vous la mise en alignH à AlignH.Left et alignV à AlignV.Top. Alors X et Y devraient être 0, 0. PaneFraction pour le coordType devrait être l'option correcte ici, sauf si je manque votre intention. Alternativement, vous pouvez simplement télécharger le code Zedgraph, l'éditer à gauche-aligner le titre (ou mieux encore, fournir une option pour cela, ce qui aurait dû être fait à l'origine), puis l'utiliser en production. Beauté de l'open source

+0

x, y sont 0 dans le constructeur, mais location.x & location.y sont modifiés plus tard. –

+0

La partie importante de ceci était d'assurer AlignH et AlignV sont réglés à gauche et en haut, respectivement. Sinon, il est par défaut Centre pour les deux. – drharris

3

Non, cela ne dépend pas de texte longueur, mais ...

Cela dépend de diverses autres:

  • alignement horizontal et vertical de la zone de texte (voir: Location)
  • Taille actuelle du volet. La taille de la police est mise à l'échelle de manière dynamique pour s'adapter à la taille changeante du graphique.
  • Le comptage de positions correctes pour avoir TextObj (ou tout autre objet) toujours au même endroit est assez difficile. Vous devez donc éviter autant que possible les nombres/fractions dans les coordonnées de votre emplacement. ZedGraph calcule parfois la position réelle de façon assez étrange alors.

Vous n'avez fourni aucun code, il est donc difficile de dire si et où vous avez fait l'erreur (le cas échéant). Mais, si je vous, je ferais quelque chose comme ça:

TextObj fakeTitle = new TextObj("some title\n ", 0.0, 0.0); // I'm using \n to have additional line - this would give me some space, margin. 
fakeTitle.Location.CoordinateFrame = CoordType.ChartFraction; 
fakeTitle.Location.AlignH = AlignH.Left;  // Left align - that's what you need 
fakeTitle.Location.AlignV = AlignV.Bottom; // Bottom - it means, that left bottom corner of your object would be located at the left top corner of the chart (point (0,0)) 
fakeTitle.FontSpec.Border.IsVisible = false; // Disable the border 
fakeTitle.FontSpec.Fill.IsVisible = false; // ... and the fill. You don't need it. 
zg1.MasterPane[0].GraphObjList.Add(fakeTitle); 

J'utilise ChartFraction coordonnées au lieu de PaneFraction (comme drharris indique) les coordonnées d'avoir le titre bien aligné avec la bordure gauche du graphique. Sinon, il serait complètement vidé sur le côté gauche (pas de marge, etc ...) - ça a l'air mieux comme ça.

Mais assurez-vous que vous ne l'avez pas trop grande taille de la police - il pourrait être coupée en haut

+0

ChartFraction place toujours le texte au milieu du graphique, quelles que soient les valeurs que je donne à location.X & location.Y. –

+0

Veuillez vous assurer que vous ajoutez l'objet à l'objet 'GraphPane', pas à l'objet' MasterPane'. Jetez un oeil sur mon code, il fonctionne parfaitement avec la dernière version de ZG. Peut-être que vous avez un vieux ver? – Gacek

Questions connexes