Zedgraph textobj X位置取决于文本长度?

时间:2010-05-28 22:21:44

标签: zedgraph

我有一个Zedgraph textobj,我想把它放在同一个x,y位置(ASP.NET图像)。我注意到文本并不总是显示在相同的起始位置。它会根据文本的长度而变化。我试着通过用空格填充文本来使文本具有相同的长度。它有所帮助,但结果并不总是一致的。我正在为coordType使用PaneFraction。

让一段文字始终显示在同一个x位置的正确方法是什么。我使用textobj作为标题,因为原生标题属性总是显示为居中,我需要将我的标题与图形保持对齐。

2 个答案:

答案 0 :(得分:3)

不,它不依赖于文本长度,但是......

这取决于其他各种因素:

  • 文本框的水平和垂直对齐(请参阅:Location
  • 窗格的当前大小。动态缩放字体大小以适应图表的更改大小。
  • 计算正确的位置以使TextObj(或任何其他对象)始终在同一个地方是非常困难的。因此,您需要尽可能多地避免位置坐标中的任何数字/分数。 ZedGraph有时会以非常奇怪的方式计算真实位置。

您没有提供任何代码,因此很难判断您是否以及在哪里犯了错误(如果有的话)。但是,如果我是你,我会做那样的事情:

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);

我正在使用ChartFraction坐标代替PaneFraction(如drharris所建议的)坐标,以使标题与图表的左边框很好地对齐。否则它将完全冲到左侧(没有边缘等......) - 这样看起来更好。

但请确保您没有设置太大的字体大小 - 它可能会被剪裁在顶部

答案 1 :(得分:0)

您使用的是这个构造函数吗?

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

如果没有,请确保将alignH设置为AlignH.Left并将alignV设置为AlignV.Top。那么X和Y应该是0,0。PaneFraction对于coordType应该是正确的选项,除非我错过你的意图。

或者,您可以简单地下载Zedgraph代码,将其编辑为左对齐标题(或者甚至更好,为此提供一个选项,应该最初完成),然后在生产中使用它。开源之美。