我有一个Zedgraph textobj,我想把它放在同一个x,y位置(ASP.NET图像)。我注意到文本并不总是显示在相同的起始位置。它会根据文本的长度而变化。我试着通过用空格填充文本来使文本具有相同的长度。它有所帮助,但结果并不总是一致的。我正在为coordType使用PaneFraction。
让一段文字始终显示在同一个x位置的正确方法是什么。我使用textobj作为标题,因为原生标题属性总是显示为居中,我需要将我的标题与图形保持对齐。
答案 0 :(得分:3)
不,它不依赖于文本长度,但是......
这取决于其他各种因素:
您没有提供任何代码,因此很难判断您是否以及在哪里犯了错误(如果有的话)。但是,如果我是你,我会做那样的事情:
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代码,将其编辑为左对齐标题(或者甚至更好,为此提供一个选项,应该最初完成),然后在生产中使用它。开源之美。