1

我尝试为更高级的轴配置我自己的自定义 y 轴(标准概率图,结果请查看链接的 png):

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

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

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

问题是,这个属性没有效果。所以我在原始源代码中搜索导致此问题的代码并找到了它。position 属性在轴由仅取决于“世界”原点和刻度线位置的某些值构造时被覆盖。自定义位置设置被删除。

所以我的问题是:

  • 这种行为是有意的还是错误的?
  • 如果没有错误,我如何对齐我的轴刻度标签,使其与轴线对齐?

总结一下:刻度标签的位置属性无效。当我使用标准刻度方向时,自动文本对齐是“好的”(尽管即使为此也能控制文本到轴的距离和文本本身的右/左对齐(文本块对齐)会很好)案子)。如果我想将标签更改为轴位置,它不起作用。我认为对于具有专业外观的情节,这些格式化功能是必不可少的。

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;

干杯,

安德烈

编辑:

正如我的评论中提到的,我通过使用锚属性找到了一个“解决方法”

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

4

1 回答 1

1

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

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

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

于 2014-02-11T14:59:55.640 回答