Это не точный ответ, поскольку он предназначен для элемента управления WinForms, но, возможно, будет полезен в случае, если вы решите использовать его в WindowsFormsHost вместо элемента управления WPF, который предоставляет слишком мало, чтобы быть полезным.
Вы можете использовать команды OLE через ExecWB для экземпляра ActiveX: OLECMDID_ZOOM
для размера текста и OLECMDID_OPTICAL_ZOOM
для оптического увеличения. Например,
object pvaIn = 200; // A VT_I4 percentage ranging from 10% to 1000%
var browserInst = ((SHDocVw.IWebBrowser2)(browserContol.ActiveXInstance));
browserInst.ExecWB(SHDocVw.OLECMDID.OLECMDID_OPTICAL_ZOOM,
SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,
ref pvaIn, IntPtr.Zero);
Некоторые заметки:
- ссылка на сборку Interop.SHDocVw необходима
- команда успешно выполняется только после загрузки документа
- диапазон pvaIn может быть получен через
OLECMDID_GETZOOMRANGE
- для справочного списка команд на MSDN
- Я испытал это странное поведение, которое, казалось, происходило только на не 96 dpi. При запуске размер отображаемого текста не соответствовал тому, что сохранен в состоянии OLECMDID_ZOOM. Установка значения (в любое значение) не устранила несоответствия: отображаемый размер по-прежнему выглядит как [сохраненный размер + 2]. Когда оптическое увеличение было установлено на 100%, расхождение в размере текста исчезло (размер текста заметно уменьшился после увеличения до 100%). Этого не произошло в IE, и, возможно, это был просто странный артефакт в моей среде - но только к вашему сведению.