我想在玩家中展示一些情节。我想用相同的Z轴刻度显示它,因此颜色会自动改变(而不是最小值和最大值)。这是我的功能。
private void PlaySaturationButton_Click(object sender, EventArgs e)
{
float Zmin = (float) Sw.Min();
float Zmax = (float) Sw.Max();
for (int i = 1; i < n_time; i++)
{
var scene = new ILScene();
var plotCube = scene.Add(new ILPlotCube(twoDMode: false));
plotCube.Limits.ZMin = Zmin;
plotCube.Limits.ZMax = Zmax;
plotCube.AspectRatioMode = AspectRatioMode.MaintainRatios;
ILColormap cm = new ILColormap(Colormaps.Jet);
ILArray<float> data = cm.Data;
plotCube.Add(new ILSurface(ILMath.tosingle(Sw[":;:;" + (i - 1) + ""])){
Wireframe = { Color = Color.FromArgb(50, Color.LightGray)},
Colormap = new ILColormap(data),
Children = { new ILColorbar()}}
);
SaturationilPanel.Scene = scene;
SaturationilPanel.Refresh();
System.Threading.Thread.Sleep(50);
}
}
但它给我错误的答案。在这个函数中,min&amp;最大色彩水平仍在变化。颜色本身保持静止。我的错误在哪里?
更新
正如我们在上面的图片中看到的,有一个名为&#34; play&#34;的按钮。当我们单击该按钮时,它将执行我之前描述的功能。我希望通过&#34;重新绘制&#34;来查看数据的变化。每帧的数据。
我想,如果我为每个帧调整相同数量的极限Z(最大值和最小值)值,它也会更新色标。我读到这篇文章时似乎错了:Same color bar for multiple surfaces in ILNumerics PlotCube和http://ilnumerics.net/managing-colormaps.html。似乎色标与ILPlotCube的Z标度没有直接关系。这不对吗?
然而,我仍然在努力。我还没有得到关于ILNumerics着色的概念。
我现在想要达到的目标是,我希望每帧都有相同色阶的照片。
答案 0 :(得分:0)
不是在每个处理程序调用中重新创建表面,而是应该重用它!即使它与您的问题无关,与重复使用曲面相比,娱乐活动极其缓慢。
为了更新曲面并使其始终使用相同的数据范围,您可以这样做:
ilPanel1.Scene.First<ILSurface>().UpdateColormapped(A, dataRange: Tuple.Create(-1f, 1f));
datarange
指定用于将数据值映射到colormap颜色的单个数据范围。默认情况下,数据的最小值和最大值将映射到色彩映射的下端和上端。 datarange
让您有机会覆盖此内容并改为使用个别限制。
为了使多个曲面共享相同的颜色,基于相同的颜色图,需要为每个曲面提供datarange
的相同值。