WPF WebBrowser のズーム問題について
WPF の WebBrowser コントロールにおける、ズーム (スケール率) の設定について、どのように設定すると良いのかご存知の方はおられるでしょうか。
手元では、以下のパターンを試してみました。
- document.body.runtimeStyle.Zoom = $"{zoomPercent}%"; や document.parentWindow.execScript($"document.body.style.zoom = {zoomPercent}%;"); で設定する
- browser.ExecWB(OLECMDID.OLECMDID_OPTICAL_ZOOM, OLECMDEXEOPT.OLECMDEXEOPT_DODEFAULT, ref zoomPercent); で設定する
- レジストリーで 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 コントロールでも同様にレンダリングさせる手段はあるのでしょうか。