RenderTargetBitmap.RenderAsync のオーバーロードが WebView のスケーリングをめちゃくちゃにする非常に単純な再現ケースがあります。MainPage にあるのは、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);
編集:私が受け取った最初の回答により、ここでアスペクト比が問題ではない理由を明確にしたいと思いましたが、実際に問題があることを証明する目的のみに役立ちます。次のシナリオを考えてみましょう - 低解像度のスクリーンショットだけが必要な非常に高い DPI 画面 - 正しい比率で縮小しても、WebView は台無しになります。また、私のシナリオでは、後でスクリーンショットを手動でサイズ変更することはできません。スケーリングされた寸法を使用した RenderAsync オーバーロードははるかに高速であり、その方法を使用することを本当に好みます。