xaml - RenderTargetBitmap 扰乱了 WebView 缩放

标签 xaml webview windows-10 win-universal-app rendertargetbitmap

我有一个非常简单的 RenderTargetBitmap.RenderAsync 重载情况,它扰乱了 WebView 缩放。我在主页上只有一个 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 调用之前页面的样子:

Before RenderAsync

这就是调用后发生的情况:

After RenderAsync

知道为什么以及如何防止这种情况吗?请注意,只有当我调用时才会发生

await rtb.RenderAsync(this, 1280, 720);

但如果我在没有缩放的情况下调用重载,则不会

await rtb.RenderAsync(this);

编辑:由于我收到的第一个答案,我想澄清为什么长宽比不是这里的问题,而只是为了证明确实存在问题。考虑以下场景 - 非常高的 DPI 屏幕,只需要较低分辨率的屏幕截图 - 即使您以正确的比例缩小它,它仍然会弄乱 WebView。另外,对于我的场景,之后手动调整屏幕截图的大小不是一个选项 - 具有缩放尺寸的 RenderAsync 重载要快得多,我真的更喜欢使用该方法。

最佳答案

非常奇怪的行为... 我发现了一个非常脏的(!)修复。我基本上再次隐藏并显示 WebView (wv)。

private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
    RenderTargetBitmap rtb = new RenderTargetBitmap();
    await rtb.RenderAsync(wv, 1280, 720);
    wv.Visibility = Visibility.Collapsed;
    await Task.Delay(100);
    wv.Visibility = Visibility.Visible;
}

我对这个解决方案并不感到自豪,而且 webview 闪烁,但至少它不再“爆炸”了......

关于xaml - RenderTargetBitmap 扰乱了 WebView 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35315232/

相关文章:

c# - Windows 10 : differentiate between preinstalled app and downloaded app

powershell - 在 Windows 10 中使用 PS 将程序固定到任务栏

c# - Windows 应用商店应用程序中 XAML 网格中的图像重叠

android - 当文本长于屏幕宽度时,为什么 WebView 无法正常工作?

javascript - 以编程方式单击 Windows UWP WebView 中的 anchor

windows - 如何清除 UWP WebView 缓存?

uwp - 在 UWP 的资源字典中使用 TooltipService.Tooltip 关键字

WPF MVVM ScrollIntoView

windows-phone-7 - WP7 - 检查 QWERTY 键盘

xaml - 使用 MvvmCross 在 UWP 应用程序中打开新窗口