У меня очень простой пример воспроизведения RenderTargetBitmap.RenderAsync, перегружающий масштабирование WebView. Все, что я на MainPage является WebView и кнопка:RenderTargetBitmap испортил масштабирование WebView
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<WebView Source="http://bing.com"></WebView>
<Button Content="Render me"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Click="ButtonBase_OnClick" />
</Grid>
В коде позади есть только простой обработчик события
private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
RenderTargetBitmap rtb = new RenderTargetBitmap();
await rtb.RenderAsync(this, 1280, 720);
}
Это то, что страница выглядит как прежде RenderAsync вызова:
и это то, что происходит после вызова:
Любая идея, почему и как предотвратить это? Обратите внимание, что это происходит только, если я позвоню
await rtb.RenderAsync(this, 1280, 720);
но если я называю перегрузку без масштабирования
await rtb.RenderAsync(this);
EDIT: Из-за первый ответ я получил, я хотел бы уточнить, почему соотношение сторон здесь не проблема, а только служит доказательству того, что на самом деле проблема. Подумайте о следующем сценарии - очень высоком экране DPI, где требуется только снимок экрана более низкого разрешения - даже если вы масштабируете его с помощью соотношения RIGHT, он по-прежнему запутывает WebView. Кроме того, для моего сценария изменение размера снимка вручную вручную не является вариантом - перегрузка RenderAsync с масштабированными измерениями намного быстрее, и я бы предпочел использовать этот метод.
Конечно, это ошибка, единственное обходное решение - маленькая мерцающая вещь. MainWebView.Visibility = Visibility.Collapsed; ждут Task.Delay (10); MainWebView.Visibility = Visibility.Visible; –
@JuanPabloGarciaCoello спасибо, вы и Питер предложили аналогичное решение. :) –
Почему вручную изменить размер растрового изображения не является для вас вариантом? Если вы делаете это с переднего плана (а не «XamlRenderingBackgroundTask»), вы можете использовать ускоренные подходы с графическим процессором, такие как Win2D, чтобы сделать это очень быстро. – r2d2rigo