1

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のように切り抜くためにどの計算を適用する必要があるのか​​ わかりません。

どなたか手伝っていただけませんか?

ありがとう!

4

1 に答える 1