カメラで写真を撮ったり、ファイルからキャンバスに読み込んだりする必要があります。このキャンバスは、フォルダに保存した後にその上に何かを強調表示するために編集する必要があります。UWP:InkCanvasに画像を添付するにはどうすればよいですか?
今のとして、私はこれを使用します。
<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に渡されたストリームを何らかの形で添付しなければならないということです。 RenderTargetBitmap
クラスの「XAMLビジュアルとRenderTargetBitmapキャプチャ機能」によると