1、当c#的数组传到IDL中
在IDL中将c#通过SetNamedData传递进来数组转置即可:
FUNCTION ChangeArrayOrder,inArr
oDims=SIZE(inArr,/dimension)
result=REFORM(inArr,oDims[1],oDims[0])
RETURN,result
END
2、IDL向C#中返回变量
将传回来的数组再处理下即可:
private float[,] Magiccube(float[,] data)
{
int xcount = data.GetLength(0);
int ycount = data.GetLength(1);
float[,] result = new float[xcount, ycount];
int x1 = 0, y1 = 0;
for (int y = 0; y < ycount; y++)
{
for (int x = 0; x < xcount; x++)
{
float d = data[x, y];
result[x1, y1] = d;
y1++;
if (y1 == ycount)
y1 = 0;
}
x1++;
}
return result;
}
{
int xcount = data.GetLength(0);
int ycount = data.GetLength(1);
float[,] result = new float[xcount, ycount];
int x1 = 0, y1 = 0;
for (int y = 0; y < ycount; y++)
{
for (int x = 0; x < xcount; x++)
{
float d = data[x, y];
result[x1, y1] = d;
y1++;
if (y1 == ycount)
y1 = 0;
}
x1++;
}
return result;
}