我有一个 Zedgraph textobj,我想始终将其放置在相同的 x、y 位置(ASP.NET 图像)。我注意到文本并不总是显示在相同的起始 x 位置。它根据文本的长度而变化。我试图通过用空格填充文本来使文本具有相同的长度。它有一点帮助,但结果并不总是一致的。我将 PaneFraction 用于 coordType。
让一段文本始终显示在相同的 x 位置的正确方法是什么。我使用 textobj 作为标题,因为本机标题属性总是居中显示,我需要我的标题与图表左对齐。
我有一个 Zedgraph textobj,我想始终将其放置在相同的 x、y 位置(ASP.NET 图像)。我注意到文本并不总是显示在相同的起始 x 位置。它根据文本的长度而变化。我试图通过用空格填充文本来使文本具有相同的长度。它有一点帮助,但结果并不总是一致的。我将 PaneFraction 用于 coordType。
让一段文本始终显示在相同的 x 位置的正确方法是什么。我使用 textobj 作为标题,因为本机标题属性总是居中显示,我需要我的标题与图表左对齐。
不,它不取决于文本长度,但是......
这取决于其他各种事情:
您没有提供任何代码,因此很难判断您是否以及在哪里犯了错误(如果有的话)。但是,如果我是你,我会这样做:
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 建议的那样)坐标来使标题与图表的左边框很好地对齐。否则它将被完全冲到左侧(没有边距等......) - 这样看起来更好。
但请确保您没有设置太大的字体大小 - 它可能会被剪裁在顶部
你在使用这个构造函数吗?
TextObj(text, x, y, coordType, alignH, alignV)
如果不是,那么请确保您将 alignH 设置为AlignH.Left
alignV to AlignV.Top
。那么 X 和 Y 应该是 0、0。PaneFraction
因为 coordType 应该是这里的正确选项,除非我错过了你的意图。
或者,您可以简单地下载 Zedgraph 代码,将其编辑为左对齐标题(或者更好的是,为此提供一个选项,这本来应该已经完成),然后在生产中使用它。开源之美。