Mise en situation
Exemple
Voici 2 petites astuces utilisées lors de cette démo.
1) Conversion RenderTargetBitmap -> InMemoryRandomAccessStream
Pour convertir le screenshot qui a été généré et pouvoir le partager via le share contract, il fallait le convertir en stream
[code lang=”csharp”]
var memoryStream = await renderTargetBitmap.ToMemoryStreamAsync();
[/code]
[code lang=”csharp”]
public async static Task<InMemoryRandomAccessStream> ToMemoryStreamAsync(this RenderTargetBitmap renderTargetBitmap)
{
InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
var pixels = await renderTargetBitmap.GetPixelsAsync();
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, DisplayInformation.GetForCurrentView().LogicalDpi, DisplayInformation.GetForCurrentView().LogicalDpi, pixels.ToArray()); await encoder.FlushAsync(); return stream;
}
[/code]
2) TemplateBinding
Pour ce second example, je vais parler un peu xaml. Dans mon UI, j’ai 4 boutons qui permettent de choisir la couleur du dessin.
[code lang=”csharp”]
<Button Style="{StaticResource ButtonPaintStyle}" Background="Red" Width="50" Height="50" Click="ChangePenClick" />
<Button Style="{StaticResource ButtonPaintStyle}" Background="Blue" Width="50" Height="50" Click="ChangePenClick" />
<Button Style="{StaticResource ButtonPaintStyle}" Background="Green" Width="50" Height="50" Click="ChangePenClick" />
<Button Style="{StaticResource ButtonPaintStyle}" Background="Black" Width="50" Height="50" Click="ChangePenClick" />
[/code]
Snippet
[code lang=”csharp”]
<Ellipse x:Name="BtnEllipse" Fill="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}"/>
[/code]
Liens
No Comments