私は文字通り何時間も試しましたが、この問題を解決することはできませんでした.
私は 800x369 の UserControl を持っています。これには単純に、ワールドマップを形成するパスが含まれています。これを横向きのページに配置してから、WriteableBitmap にレンダリングします。次に、変換を実行して、1 次元の Pixels 配列を 2 次元の整数配列に変換します。次に、変換を確認するために、カスタム コントロールのクリック コマンドを結び付けて、新しく作成された配列内のカスタム コントロールに相対的な 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 アプリの提出を妨げている主な問題です。ガイダンスはありますか?