4

WinRT Webviewのズームレベルを変更するにはどうすればよいですか?

フォーカスを与えると、キーボードCTRL+ + を使用してズームイン/ズームアウトCTRL+ -
できますが、これはコードから実行できますか?

注:WebViewをScrollViewer内に配置し、そのズームを許可することは、私が探しているものではありません。

4

2 に答える 2

2

残念ながら、マネージド コードで直接行う方法はないと思います。ただし、コンテンツを所有している場合、またはいくつかの 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 では問題になりません。

誰かがより良い答えを思いつくことを願っています。

于 2012-07-30T20:18:38.307 に答える
0

うーん、良い質問です。アクセシビリティ API の一部であり、デスクトップ アプリと Metro アプリのプログラムによるズーム機能を提供するITransformProvider2 インターフェイスを調べていましたが、WebView は封印されているため、あまり役に立たないのではないかと思います。他の誰かが進歩するのに役立つ場合に備えて、とにかくこの情報を投稿してください。

Magnus さん、ただの好奇心からですが、ScrollViewer ソリューションがうまくいかないのはなぜですか?

于 2012-07-26T15:09:09.957 に答える