我在LinqPad中使用ILNumerics时遇到了一些麻烦。我在LinqPad中有以下代码:
void Main()
{
var scene = new ILScene {
new ILPlotCube(twoDMode: false) {
new ILSurface(ILSpecialData.sincf(40, 60, 2.5f)) {
Wireframe = { Color = Color.FromArgb(50, Color.LightGray) },
Colormap = Colormaps.Jet
}
}
};
scene.First<ILPlotCube>().Rotation = Matrix4.Rotation(new Vector3(1f, 0.23f, 1f), 0.7f);
scene.Camera.Add(new ILSphere());
var panel = new ILPanel { Scene = scene };
PanelManager.DisplayControl(panel);
}
此代码在“自定义”linqpad选项卡中生成一个大的蓝色圆圈(中间带有文本“ILNumerics ILPanel(OpenGL)”)。 linqpad中的“结果”选项卡包含以下文本:
Determining Design Mode...
Entry Assembly: (null)
CurrentTypeAssembly: ILNumerics32, Version=3.1.0.0, Culture=neutral, PublicKeyToken=null
Loaded Assemblies:
Design Mode: True
问题:
答案 0 :(得分:1)
是的,你可以在LINQPad中渲染WPF控件 - 使用PanelManager.DisplayWpfElement
(或者只是通过转储它)。
我认为它不会对您有所帮助,因为ILNumerics仅使用Windows窗体。它没有引用任何WPF库。
我不知道是否有可能欺骗ILNumerics认为它不在设计模式中。在ILNumerics.Drawing.ILHelper.IsDesignMode
处查看Reflector。它正在做引用程序集的狡猾。我不知道为什么他们不只是检查控件的DesignMode属性 - 这是正常的做法。
答案 1 :(得分:1)
1)ILNumerics仅针对Winforms。但您可能尝试使用WPF WindowsFormsHost容器?我对此没有任何经验,但不希望你的情况有所改善。
2)ILNumerics正在检查DesignMode的方式:如果执行程序集(ILNumerics.dll)不在条目程序集(LinqPad)的引用列表中,则考虑使用DesignMode。因此,我可以看到2个“技巧”:
第二个“技巧”可能会引导我们未来的解决方案。我不知道,如果“普通”DesignMode属性与LinqPad一起工作吗?也许我们可以将现有方法与所有不常见情况的设置开关结合起来。