Je tente de mettre un filigrane sur une photo prise par mon application. Le moyen le plus simple que je pourrais penser est d'utiliser FrameworkElement
pour construire les couches et ensuite utiliser RenderTargetBitmap
pour créer l'image marquée par l'eau.Windows Store App - RenderTargetBitmap créant un bitmap de taille incorrecte
Voici un exemple de mon XAML.
<ScrollViewer x:Name="Zoom" Grid.Column="1" HorizontalScrollMode="Enabled" VerticalScrollMode="Enabled" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden" ZoomMode="Enabled">
<Border x:Name="BgBorder">
<Grid x:Name="ImageGird" SizeChanged="ImageGird_SizeChanged">
<Grid x:Name="CaptureGird">
<Image x:Name="CapturedImage" Stretch="None" Source="ms-appx:///Assets/Photo.jpg" />
<StackPanel x:Name="Watermark" VerticalAlignment="Top" HorizontalAlignment="Left" Background="#6FFFFFFF" Margin="10">
<TextBlock Text="Name" Foreground="Black" Margin="10,2.5,10,2.5" />
<TextBlock Text="12345" Foreground="Black" Margin="10,2.5,10,2.5"/>
<TextBlock Text="54321" Foreground="Black" Margin="10,2.5,10,2.5" />
</StackPanel>
</Grid>
</Grid>
</Border>
</ScrollViewer>
En raison de la résolution des images dont ils ont besoin, il est enveloppé dans un ScrollViewer
il peut être zoomée, cependant lorsque je tente de créer un bitmap de cette image en utilisant le code ci-dessous, le bitmap rendu est plus petit alors le FrameworkElement
private async void Button_Click(object sender, RoutedEventArgs e)
{
try
{
var displayI = DisplayInformation.GetForCurrentView();
var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(ImageGird, (int)ImageGird.ActualWidth, (int)ImageGird.ActualHeight);
IBuffer pixels = await renderTargetBitmap.GetPixelsAsync();
CapturedImage2.Source = renderTargetBitmap;
Debug.WriteLine("Button_Click: ImageGrid: " + ImageGird.ActualWidth + "x" + ImageGird.ActualHeight + " RenderTargetBitmap: " + renderTargetBitmap.PixelWidth + "x" + renderTargetBitmap.PixelHeight);
}
catch (Exception)
{
}
}
la sortie de débogage est
Button_Click: ImageGrid: 5344x3008 RenderTargetBitmap: 4096x2306
quelqu'un peut-il me dire pourquoi le bitmap rendu est beaucoup plus petite que la ele réelle Je le crée depuis?
Existe-t-il également un meilleur moyen de filigrane d'une image?
Cela semble intéressant. Je vais vérifier, je suis surpris de ne pas être tombé sur cette bibliothèque. – Ne0
Btw: La galerie d'exemples est également disponible dans Windows 10 Store. Rechercher: Win2D –