我已经尝试了几个小时,但我一直无法解决这个问题。
我有一个用户控件,即 800x369,它简单地包含形成世界地图的路径。我将它放在横向页面上,然后将其渲染为 WriteableBitmap。然后我运行转换以将 1d Pixels 数组转换为 2d 整数数组。然后,为了检查转换,我连接了自定义控件的单击命令,以使用相对于新创建数组中的自定义控件的 Point.X 和 Point.Y。我的逻辑是这样的:
wb = new WriteableBitmap(worldMap, new TranslateTransform());
wb.Invalidate();
intTest = wb.Pixels.To2DArray(wb.PixelWidth);
我的转换逻辑是这样的:
public static int[,] To2DArray(this int[] arr,int rowLength)
{
int[,] output = new int[rowLength, arr.Length / rowLength];
if (arr.Length % rowLength != 0) throw new IndexOutOfRangeException();
for (int i = 0; i < arr.Length; i++)
{
output[i % rowLength, i / rowLength] = arr[i];
}
return output;
}
现在,当我进行检查时,我得到了完全和完全奇怪的结果:显然所有像素的值都是 -1 或 0,并且这些值完全独立于原始颜色。
只是为了后代:这是我的检查代码:
private void Check(object sender, MouseButtonEventArgs e)
{
Point click = e.GetPosition(worldMap);
ChangeNotification(intTest[(int)click.X,(int)click.Y].ToString());
}
结果显示与 WriteableBitmap 渲染到其中的路径完全没有相关性。路径填充了纯白色。
到底他妈发生了什么?我已经尝试了几个小时没有运气。拜托,这是阻止我提交我的第一个 WP7 应用程序的主要问题。有什么指导吗?