

WPF の WebBrowser コントロールにおける、ズーム (スケール率) の設定について、どのように設定すると良いのかご存知の方はおられるでしょうか。

手元では、以下のパターンを試してみました。

  1. document.body.runtimeStyle.Zoom = $"{zoomPercent}%"; や document.parentWindow.execScript($"document.body.style.zoom = {zoomPercent}%;"); で設定する
  2. browser.ExecWB(OLECMDID.OLECMDID_OPTICAL_ZOOM, OLECMDEXEOPT.OLECMDEXEOPT_DODEFAULT, ref zoomPercent); で設定する
  3. レジストリーで Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION を弄る + 弄った上で 1 や 2 を試す

テキストサイズについては思った通りに zoomPercent の値が適用されますが、画像その他オブジェクト類 (背景画像や Flash Player などの
embed 要素で埋め込まれたもの) については、残念ながら適切にズーム設定が適用されません。

色々試してみたところ、テキストは zoomPercent に 200.0 を渡せば 200% になるのですが、画像等は 400% を渡さないと 200%
scale にならないとか、Flash Player
なコンテンツの場合、作りの影響であると思われますが、表示領域の予約サイズ分だけスケーリングされ、コンテンツは一切スケーリングされない結果となりました。(左上
100% 領域の範囲のみ 100% scale で描画される/50% scale などにしても、左上 1/4 のみが 100% scale で描画される)

特に scaling を指定していない状態で、system DPI が 200% の環境で WebBrowser コントロールを使用した場合、文字は
200% 表示になるものの、画像類は 100% になってしまいます。  
また、いくつかのサイトで確認してみたところ、確認しきれている訳ではないのですが、スタイルシート的に em 指定 (絶対単位指定) であれば scaling
が反映されますが、px 指定 (相対単位指定) の場合には、どうも適切に反映されていないように見えます。

Internet Explorer 自体は scaling
の設定に合わせ、同じコンテンツを指定したスケールで適切にレンダリングしているのですが、WebBrowser
コントロールでも同様にレンダリングさせる手段はあるのでしょうか。


CC BY-SA 3.0
2015-12-11T00:10:16.557
19861
2015-12-11T00:10:16.557
13613
question
c# wpf internet-explorer com
WPF WebBrowser のズーム問題について