В приложении Магазина Windows я хочу обрезать повернутую прямоугольную часть WriteableBitmap, как в случае 2 на следующем изображении.
- У меня есть P0, ширина, высота и P1 и угол поворота прямоугольника.
- Вращение основано на центре каждого прямоугольника
Я использую метод расширения обрезки, доступный в WriteableBitmapEx.WinRT для обрезки.
В случае 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.
Кто-нибудь из вас будет любезен помочь?
Спасибо!