Windows формы веб-браузера контролируют уровень масштабирования - PullRequest
0 голосов
/ 07 сентября 2018

Я использую элемент управления веб-браузера для отображения в моем приложении некоторых сгенерированных на лету HTML-документов.

Проблема в том, что на моей машине указанные документы отображаются в некотором увеличении. На компьютерах других коллег все выглядит "нормально". Это должна быть какая-то местная обстановка, но я не могу найти, где это можно изменить.

Я могу использовать CTRL + колесико прокрутки, чтобы уменьшить масштаб, но уровень масштабирования не сохраняется. Насколько я вижу, нет простого способа установить предопределенный уровень масштабирования программно.

Это может быть далеко, но я боюсь, что это как-то связано с Internet Explorer (который я никогда не использую) и его настройками. Изменение типа управления, к сожалению, невозможно.

Любая помощь будет очень признательна, спасибо.

Ответы [ 4 ]

0 голосов
/ 12 сентября 2018

Windows 10 выпускает все устройства HDPI автоматически достигает уровня увеличения 200%. Для начала щелкните правой кнопкой мыши любое пустое место на рабочем столе и выберите Параметры отображения в нижней части контекстного меню. Кроме того, вы можете перейти к меню «Пуск»> «Настройка»> «Система»> «Дисплей». Приложение «Настройки» в Windows 10 готово к масштабированию дисплея для каждого монитора.

Нет правильного решения, так как у меня три экрана, и у всех разный hdpi дисплея, и я получаю 200% -ое увеличение автоматически. Таким образом, 1 экран показывает, что все в порядке, а другие 2 увеличены.

window.onload = function() {
var currFFZoom = 1;
var currIEZoom = 100;

$('#In').on('click',function(){
    if (navigator.userAgent.indexOf('Firefox') != -1 && parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf('Firefox') + 8)) >= 3.6){//Firefox
        var step = 0.02;
        currFFZoom += step; 
        $('body').css('MozTransform','scale(' + currFFZoom + ')');
    } else {
        var step = 2;
        currIEZoom += step;
        $('body').css('zoom', ' ' + currIEZoom + '%');
    }
});

$('#Out').on('click',function(){
    if (navigator.userAgent.indexOf('Firefox') != -1 && parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf('Firefox') + 8)) >= 3.6){//Firefox
        var step = 0.02;
        currFFZoom -= step;                 
        $('body').css('MozTransform','scale(' + currFFZoom + ')');

    } else {
        var step = 2;
        currIEZoom -= step;
        $('body').css('zoom', ' ' + currIEZoom + '%');
    }
});};


<input type="button" id="Out" alt="Zoom Out"/>
<input type="button" id="In" alt="Zoom In"/>
0 голосов
/ 11 сентября 2018

Проблема с разрешением экрана. Ваш экран настроен на меньшее разрешение, тогда как экран ваших коллег настроен на более высокое разрешение, чем у вас.

Измените разрешение экрана на такое же, как разрешение экрана ваших коллег или наоборот, и вы должны увидеть, что проблема решена.

Примечание: Решение о том, какое разрешение является правильным, полностью зависит от потребностей и ожиданий вашего клиента. Вы также можете установить правильное ожидание с самого начала, чтобы не разочаровать клиента на более позднем этапе.

0 голосов
/ 11 сентября 2018

Может ли быть, что ваш дисплей масштабируется? (Предполагается, что Win 10, но более старые версии должны быть очень похожи)

рабочий стол, контекстное меню -> настройки экрана -> в разделе «Масштаб и макет» установлено ли для вас значение выше 100%?

0 голосов
/ 10 сентября 2018

Проблема в том, что на моей машине указанные документы отображаются в увеличенном масштабе. в.

Internet Explorer соблюдает настройки масштаба Windows. В результате размер, который вы увидите на элементе управления WebBrowser в системе с масштабированием 100, отличается от размера, который вы видите на элементе управления WebBrowser в системе с масштабированием 150, тогда как оба элемента управления WebBrowser установлены на 100 % zoom.

Причина в масштабировании. Коэффициент масштабирования такой же, как коэффициент масштабирования Windows, деленный на 100 или physicalScreenHeight/logicalScreenHeight.

Насколько я вижу, нет простого способа установить предопределенный зум уровень программно.

На самом деле, есть. Чтобы изменить уровень масштабирования элемента управления веб-браузера, вы можете получить экземпляр IWebBrowser2 из свойства WebBrowser.ActiveXInstance, а затем использовать его метод ExecWB, установить установить масштаб следующим образом:

int OLECMDID_OPTICAL_ZOOM = 63;
int OLECMDEXECOPT_DONTPROMPTUSER = 2;
dynamic iwb2 = webBrowser1.ActiveXInstance;
object zoom = 200; //The value should be between 10 , 1000
iwb2.ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, zoom, zoom);

Вы также можете добавить ссылку на Microsoft Internet Controls (SHDocVw.dll) и привести WebBrowser.ActiveXInstance к SHDocVw.WebBrowser и использовать метод ExecWB. Но приведенный выше код делает свое дело без добавления каких-либо ссылок.

Масштабирование в веб-браузере полностью отличается от масштабирования в CSS3. Но вы можете узнать о том, как установить масштаб документа: webBrowser1.Document.Body.Style = "zoom:200%";

Все вышеперечисленные коды должны запускаться после заполнения документа.

...