1

在 Windows 应用商店应用程序中,我想裁剪 WriteableBitmap 的旋转矩形部分,如下图中的案例 2。

图片

  • 我有矩形的 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

2

WriteableBitmapEx库实现该RotateFree方法。

bitmapImage.RotateFree(70);

http://writeablebitmapex.codeplex.com/SourceControl/changeset/82055

于 2014-01-14T09:47:05.430 回答