Windows ストア アプリで、次の画像のケース 2 のように、WriteableBitmap の回転した四角形の部分をトリミングしたいと考えています。
- P0、幅、高さ、P1、および長方形の回転角度があります。
- 回転は各長方形の中心に基づいています
トリミングにはWriteableBitmapEx.WinRTで利用できる Crop 拡張メソッドを使用しています。
ケース 1 では、次のことを行っています。
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(PhotoGrid);
WriteableBitmap bitmapImage = new WriteableBitmap(renderTargetBitmap.PixelWidth, renderTargetBitmap.PixelHeight);
IBuffer pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
using (var stream = new InMemoryRandomAccessStream())
{
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, 96, 96, pixelBuffer.ToArray());
await encoder.FlushAsync();
stream.Seek(0);
bitmapImage.SetSource(stream);
}
// Redraw the WriteableBitmap
bitmapImage.Invalidate();
SampleImage.Source = bitmapImage.Crop(new Rect(p0.X, p0.Y, width, height));
しかし、回転が行われると、ケース2のように切り抜くためにどの計算を適用する必要があるのか わかりません。
どなたか手伝っていただけませんか?
ありがとう!