2

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

让一段文本始终显示在相同的 x 位置的正确方法是什么。我使用 textobj 作为标题,因为本机标题属性总是居中显示,我需要我的标题与图表左对齐。

4

2 回答 2

3

不,它不取决于文本长度,但是......

这取决于其他各种事情:

  • 文本框的水平和垂直对齐(参见:位置
  • 窗格的当前大小。字体大小会动态缩放以适应图表不断变化的大小。
  • 计算正确的位置以使 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 建议的那样)坐标来使标题与图表的左边框很好地对齐。否则它将被完全冲到左侧(没有边距等......) - 这样看起来更好。

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

于 2010-06-05T15:24:59.563 回答
0

你在使用这个构造函数吗?

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

如果不是,那么请确保您将 alignH 设置为AlignH.LeftalignV to AlignV.Top。那么 X 和 Y 应该是 0、0。PaneFraction因为 coordType 应该是这里的正确选项,除非我错过了你的意图。

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

于 2010-06-05T15:20:18.293 回答