Ilnumerics 轴标签位置在手动模式下混乱和标签位置属性不起作用



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

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

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

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

问题是,这个属性没有任何作用。因此,我在原始源代码中搜索了导致此问题的代码,并找到了它。位置属性始终被覆盖。轴由一些仅取决于"世界"起源和刻度线位置的值构成。自定义位置设置被擦除。

所以我的问题是:

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

结束它:记号标签的位置属性没有效果。当我使用标准刻度方向时,自动文本对齐是"可以"的(尽管即使在这种情况下,也可以控制文本到轴的距离和文本本身的右/左对齐(文本块对齐))。如果我想将标签更改为轴位置,它不起作用。我认为对于看起来专业的情节来说,这些形成特征是必不可少的。

ILaxs.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

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

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

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

最新更新