WinRT Webviewのズームレベルを変更するにはどうすればよいですか?
フォーカスを与えると、キーボードCTRL+ +
を使用してズームイン/ズームアウトCTRL+ -
できますが、これはコードから実行できますか?
注:WebViewをScrollViewer内に配置し、そのズームを許可することは、私が探しているものではありません。
WinRT Webviewのズームレベルを変更するにはどうすればよいですか?
フォーカスを与えると、キーボードCTRL+ +
を使用してズームイン/ズームアウトCTRL+ -
できますが、これはコードから実行できますか?
注:WebViewをScrollViewer内に配置し、そのズームを許可することは、私が探しているものではありません。
残念ながら、マネージド コードで直接行う方法はないと思います。ただし、コンテンツを所有している場合、またはいくつかの css / スクリプトを挿入できる場合は、回避策があります。
HTML に、次の css を追加します。
<style type="text/css">
body
{
zoom:100%;
}
</style>
HTML には、次のようなスクリプト ブロックも含めます。
function setZoomLevel(newZoom) {
document.styleSheets[0]['rules'][0].style['zoom'] = newZoom;
}
C# コードで、ヘルパー メソッドを追加します。
private void SetZoomLevel(int level)
{
string slevel = string.Format("{0}%", level);
webBrowser.InvokeScript("setZoomLevel", slevel);
}
C# コードで、次を呼び出してズーム レベルを調整できるようになりました。
SetZoomLevel(200);
これは私が見つけた最高のものですが、残念ながら、スタイルとスクリプトを挿入できない場合は機能しません。
注:これは、ズーム スライダーを調整するのとほとんど同じ方法でコンテンツをズームしますが、デスクトップ ブラウザーではズーム スライダーは影響を受けません。したがって、SetZoomLevel(200);を呼び出すと、スライダーを 200% に設定すると、実際には 400% と表示されます。スライダーがないため、これは WebView では問題になりません。
誰かがより良い答えを思いつくことを願っています。
うーん、良い質問です。アクセシビリティ API の一部であり、デスクトップ アプリと Metro アプリのプログラムによるズーム機能を提供するITransformProvider2 インターフェイスを調べていましたが、WebView は封印されているため、あまり役に立たないのではないかと思います。他の誰かが進歩するのに役立つ場合に備えて、とにかくこの情報を投稿してください。
Magnus さん、ただの好奇心からですが、ScrollViewer ソリューションがうまくいかないのはなぜですか?