ilnumerics轴标签位置在手动模式下被搞砸了标签位置属性不起作用

时间:2014-02-11 09:31:51

标签: c# ilnumerics

我试图为更高级的轴配置我自己的自定义y轴(范数概率图,对于链接的png的结果看):

http://img5.fotos-hochladen.net/uploads/labelmisaligned2cd86m4qov.png

刻度线模式设置为“手动”。我希望刻度线指向内部,在科学主题的图中看起来有时更“专业”。所以我将 TickLength 属性设置为-0.5(但问题不依赖于方向)。没有“内向”属性,至少我找不到,所以我尝试了这个想法,这对于滴答线有效。 使用此配置,刻度标签不再与轴正确对齐(请参见图像)。所以我用锚和位置属性玩了一点。单个刻度的位置属性由

设置
    tick.Label.Position = new Vector3(2f, 0, 0);

问题是,此属性无效。所以我在原始源代码中搜索导致此问题的代码,我找到了它。只有在某些值构成轴时,才会覆盖position属性,这些值仅取决于“world”的来源和刻度线的位置。自定义位置设置被删除。

所以我的问题是:

  • 是出于这种行为还是一个错误?
  • 如果没有错误,我怎么能将我的轴刻度标签对齐,以便与轴线完全对齐?

将其包装起来:ticks标签的position属性无效。当我使用标准刻度方向时,自动文本对齐是'ok'(尽管能够控制文本到轴的距离以及文本本身的右/左对齐(文本块对齐)是很好的,即使这样案件)。如果我想将标签更改为轴位置则不起作用。我认为对于专业的情节来说,这些格式化功能是必不可少的。

ILAxis.cs 中的

ConfigureAxis 方法将覆盖以下foreach块中的所有标签位置:

    foreach (ILTick tick in Ticks) {
                float curVal = tick.Position - min; 
                Vector3 curPos = startWorld + a * curVal;
                tickPosArr[i++] = curPos.X; tickPosArr[i++] = curPos.Y; tickPosArr[i++] = curPos.Z;
                if (Ticks.TickLength < 0)
                    tick.Label.Position = curPos;
                curPos += (tickDirWorldStartLines + ticka * curVal);
                tickPosArr[i++] = curPos.X; tickPosArr[i++] = curPos.Y; tickPosArr[i++] = curPos.Z;
                if (Ticks.TickLength >= 0)
                    tick.Label.Position = curPos;

欢呼声,

andré

修改

如我的评论中所述,我通过使用锚属性

找到了“解决方法”

http://www.fotos-hochladen.net/uploads/unbenanntcs7kreytib.png

1 个答案:

答案 0 :(得分:1)

问题的第一部分解决了问题http://ilnumerics.net/mantis/view.php?id=168,该问题将在下一版本中修复。通常,刻度线会自动定位在用户交互中,例如旋转。根据关于轴的刻度标签的相对位置,不断调整刻度标签位置和锚点。固定值仅在极少数情况下有用。

但是,如果您不想依赖自动设置,则可以使用自定义刻度标签配置自己的设置。您可以使用'ILAxis.Ticks.Mode = TickMode.Manual'并添加单个刻度。每个刻度可以具有其单独的标签,该标签不会在轴配置功能中被覆盖。

请参阅:关于轴+滴答配置的所有内容:http://ilnumerics.net/axis-configuration.html