C# 如何更改ILNumerics打印标记类型?
我在3D场景中创建了一组随机生成的点,在运行时,我希望将点标记的类型更改为三角形,如图所示: 可能吗?我怎样才能做到这一点?我还需要改变一些点的颜色 场景初始化代码如下:C# 如何更改ILNumerics打印标记类型?,c#,ilnumerics,C#,Ilnumerics,我在3D场景中创建了一组随机生成的点,在运行时,我希望将点标记的类型更改为三角形,如图所示: 可能吗?我怎样才能做到这一点?我还需要改变一些点的颜色 场景初始化代码如下: ILArray<float> points = ILMath.tosingle(ILMath.randn(3, 1000)); var scene = new ILScene { new ILPlotCube(twoDMode: false) { new ILPoints
ILArray<float> points = ILMath.tosingle(ILMath.randn(3, 1000));
var scene = new ILScene
{
new ILPlotCube(twoDMode: false)
{
new ILPoints
{
Positions = points,
Color = null,
Size = 2
}
}
};
ILArray points=ILMath.tosingle(ILMath.randn(31000));
var scene=新场景
{
新ILPlotCube(twoDMode:false)
{
新点
{
位置=点,
颜色=空,
尺寸=2
}
}
};
标记(ILMarker
)和“点”(ILPoints
)是非常不同的。标记的可配置性要灵活得多,大多数看起来更漂亮,渲染成本也更高。它们通常由边框(线条形状)和填充区域(三角形形状)组成,并带有许多预定义的外观
另一方面,ILPoints的设计是为了快速和简单。可以轻松创建数百万个点,而不会降低打印性能。不要用记号笔试这个!但这些点就是它们:填充圆。就是它。没有边界,没有不同的形状
然而,如果你想尝试一下,即使你的问题中有1000分,你也可以这样做。只需使用ILLinePlot
并为其配置标记即可。您可以将线条颜色设置为color.Empty
以使标记单独显示
new ILLinePlot(points, lineColor: Color.Empty, markerStyle: MarkerStyle.TriangleDown)
为了获得单个点标记的单个颜色,您可以将标记(点)拆分为单个点集。使用上述方案为每组点创建一个ILLinePlot
问题中涉及“动态”的部分也很简单:您可以在运行时更改标记的类型以及任何其他属性。下面是一个简单的示例,通过单击场景中的任意位置,在红色三角形标记和白色矩形标记之间切换标记:
ilPanel1.Scene.MouseClick += (_s, _a) => {
if (_a.DirectionUp) return;
var lp = ilPanel1.Scene.First<ILLinePlot>();
if (lp != null) {
if (lp.Marker.Style == MarkerStyle.TriangleDown) {
lp.Marker.Style = MarkerStyle.Rectangle;
lp.Marker.Fill.Color = Color.White;
} else {
lp.Marker.Style = MarkerStyle.TriangleDown;
lp.Marker.Fill.Color = Color.Red;
}
lp.Configure();
ilPanel1.Refresh();
}
};
ilPanel1.Scene.MouseClick+=(\u s,\u a)=>{
如果(_a.DirectionUp)返回;
var lp=ilPanel1.Scene.First();
如果(lp!=null){
if(lp.Marker.Style==MarkerStyle.TriangleDown){
lp.Marker.Style=MarkerStyle.Rectangle;
lp.Marker.Fill.Color=颜色.白色;
}否则{
lp.Marker.Style=MarkerStyle.TriangleDown;
lp.Marker.Fill.Color=Color.Red;
}
lp.Configure();
ilPanel1.Refresh();
}
};
好的,我想你的问题现在清楚了。不幸的是,我没有在ILNumerics中使用绘图,因此我无法进一步帮助您。希望其他人会这样做-祝你好运!