Colors 如何为ILNumerics中的自定义对象添加颜色栏?

Colors 如何为ILNumerics中的自定义对象添加颜色栏?,colors,ilnumerics,colorbar,box,colormap,Colors,Ilnumerics,Colorbar,Box,Colormap,我想对自定义对象使用颜色栏。对象根据特定的颜色贴图着色。我想在运行时在颜色栏中显示此颜色映射 我已经尝试通过以下方式将其添加到场景中: ILColorbar cb = new ILColorbar(); scene.Add(cb); 或到多维数据集: plotCube.Add(cb); 甚至plotCube.Children.Add(cb) 但它仍然不起作用。为自定义对象显示颜色栏的正确方式是什么 这是我的密码: private void OK

我想对自定义对象使用颜色栏。对象根据特定的颜色贴图着色。我想在运行时在颜色栏中显示此颜色映射

我已经尝试通过以下方式将其添加到场景中:

        ILColorbar cb = new ILColorbar();
        scene.Add(cb);
或到多维数据集:

        plotCube.Add(cb);
甚至
plotCube.Children.Add(cb)

但它仍然不起作用。为自定义对象显示颜色栏的正确方式是什么

这是我的密码:

private void OKInputBodyListButton_Click(object sender, EventArgs e)
    {
        try
        {
            var sceneBody = new ILScene();
            var plotCubeBody = sceneBody.Add(new ILPlotCube(twoDMode: false));

            foreach (BlockBody item in ObjectList)
            {
                createBlockBody(item, sceneBody, plotCubeBody);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

private void createBlockBody(BlockBody BlockBody, ILScene scene, ILPlotCube plotCube)
    {
        var box = new ILTriangles("tri")
        {
            ...
            ...
        }

        plotCube.Add(box);
        var colormap = new ILColormap(Colormaps.Jet);
        Vector4 key1 = colormap.Map((float)BlockBody.Rho, new Tuple<float, float>(-1, 1));
        var test = key1.ToColor();
        box.Color = test;

        SliceilPanel.Scene = scene;
        SliceilPanel.Refresh();
    }
private void/putBodyListButton\u单击(对象发送者,事件参数e)
{
尝试
{
var sceneBody=new ILScene();
var plotCubeBody=sceneBody.Add(新的ILPlotCube(twoDMode:false));
foreach(ObjectList中的块体项)
{
createBlockBody(项目、场景库、绘图立方库);
}
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
}
}
私有void createBlockBody(块体块体、ILScene场景、ILPlotCube plotCube)
{
变量框=新的ILTriangles(“tri”)
{
...
...
}
plotCube.Add(框);
var colormap=新的ILColormap(Colormaps.Jet);
vector4key1=colormap.Map((float)BlockBody.Rho,新元组(-1,1));
var test=key1.ToColor();
颜色=测试;
SliceilPanel.Scene=场景;
SliceilPanel.Refresh();
}
以下是我的数据:

颜色栏需要一些数据:使用的颜色贴图和颜色栏轴的上限/下限。通常,它会在运行时从场景中相应的打印对象(等高线打印、曲面打印)获取这些信息。”因为它必须能够对由于交互性而对这些绘图对象所做的更改作出反应

如果要为自定义对象使用颜色栏,必须自己提供这些数据。ILColorbar提供ColormapProvider属性。为其指定一个在运行时提供信息的对象。您可以使用预定义的
ILNumerics.Drawing.Plotting.ILStaticColormapProvider
或提供自己的“IILColormapProvider”接口实现

这不适用于nuget的社区版

private void ilPanel1\u加载(对象发送方,事件参数e){
//我们需要在运行时向colorbar提供colormap数据。
//我们只需在此处使用静态colormap提供程序:
var cmProv=新的ILStaticColormapProvider(Colormaps.ILNumerics,0f,1f);
//用于打印的位置数据
ILArray A=ILMath.tosingle(ILMath.rand(31000));
//创建点
ilPanel1.Scene.Add(
新ILPlotCube(twoDMode:false){
新ILPoints(“myPoints”){
位置=A,
//因为我们想要显示一个颜色条,所以我们需要将点颜色置于colormap控制之下
Colors=cmProv.Colormap.Map(A[“1;:”]).T,
//禁用单色渲染
颜色=空
},
//添加colorbar(某处)并为其提供colormap提供程序
新的ILColorbar(){
ColormapProvider=cmProv
}
}); 
}

因为我使用的是社区版,所以无法尝试此解决方案。这是唯一的解决办法吗?我只想显示范围为-1到1(而不是示例中的0到1)的颜色栏。我的方框已经用“Rho”值着色。