Я пытаюсь поместить водяной знак на изображение, сделанное моим приложением. Самый простой способ, который я мог бы подумать, - использовать FrameworkElement
для создания слоев, а затем использовать RenderTargetBitmap
для создания отмеченного водой изображения.Приложение для Windows Store - RenderTargetBitmap, создающее растровое изображение неправильного размера
Вот образец моего 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>
Благодаря разрешению изображений они нуждаются в этом, заворачивают в ScrollViewer
так что он может быть увеличенным, однако при попытке создать растровое изображение этого изображения, используя код, приведенный ниже, тонированное растровое изображение меньше, чем выход 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)
{
}
}
отладочная
Button_Click: ImageGrid: 5344x3008 RenderTargetBitmap: 4096x2306
Может кто-нибудь сказать мне, почему тонированное растровый гораздо меньше, чем фактическое Ele Я его создаю?
Также есть лучший способ для нанесения водяного знака изображения?
Это выглядит интересно. Я проверю это, я удивлен, что не наткнулся на эту библиотеку. – Ne0
Btw: Галерея примеров также доступна в магазине Windows 10. Поиск: Win2D –