ピクセルを新しいビットマップに手動でコピーする必要があります。したがって、カメラが水平で、新しい幅が高さと等しくなるように画像の左側の部分をトリミングしたい場合は、次のようなものが機能します (このコードはテストしていませんが、100% 正しくなくても、基本的なアイデアを提供する必要があります):
WriteableBitmap SquareImage(WriteableBitmap srcBitmap)
{
int[] srcData = srcBitmap.Pixels;
int[] destData = new int[srcBitmap.PixelHeight * srcBitmap.PixelHeight];
for (int row = 0; row < srcBitmap.PixelHeight; ++row)
{
for (int col = 0; col < srcBitmap.PixelHeight; ++col)
{
destData[(row * srcBitmap.PixelHeight) + col] = srcData[(row * srcBitmap.PixelWidth) + col];
}
}
WriteableBitmap squareBitmap = new WriteableBitmap(srcBitmap.PixelHeight, srcBitmap.PixelHeight);
destData.CopyTo(squareBitmap.Pixels, 0);
return squareBitmap;
}