Код позади:
жен сделать снимок с помощью камеры или загрузить его из файла на холст, который нужно отредактировать, чтобы выделить на нем какие-то материалы после того, как они были сохранены в папке.
На данный момент я использую это:
<Grid x:Name="grid">
<Image Source="/Assets/stainless-images-110606.jpg" x:Name="ImageToEdit" Stretch="Uniform" />
<StackPanel Background="LightGreen" Width="700" Height="700" x:Name="StackPanel">
<InkCanvas x:Name="MyInkCanvas" Width="{Binding Width, ElementName=StackPanel}" Height="{Binding Height, ElementName=StackPanel}"/>
</StackPanel>
<InkToolbar TargetInkCanvas="{x:Bind MyInkCanvas}" Name="inkToolbar"/>
<Button Content="Save" Click="Button_Click" HorizontalAlignment="Right"/>
</Grid>
И вот как я получаю весь материал из xaml:
public static async Task<IRandomAccessStream> RenderToRandomAccessStream(this UIElement element)
{
RenderTargetBitmap rtb = new RenderTargetBitmap();
await rtb.RenderAsync(element);
var pixelBuffer = await rtb.GetPixelsAsync();
var pixels = pixelBuffer.ToArray();
// Useful for rendering in the correct DPI
var displayInformation = DisplayInformation.GetForCurrentView();
var stream = new InMemoryRandomAccessStream();
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Premultiplied,
(uint)rtb.PixelWidth,
(uint)rtb.PixelHeight,
displayInformation.RawDpiX,
displayInformation.RawDpiY,
pixels);
await encoder.FlushAsync();
stream.Seek(0);
return stream;
}
Когда я снимаю фотографию с камеры, я устанавливаю источник изображения на фото, но при сохранении всего материала сохраняется только фотография, а не штрихи с холста. Я предполагаю, что мне нужно каким-то образом прикрепить поток, полученный с камеры, к inkCanvas.