2016-05-07 1 views
0

В Windows 10, Delphi XE7, когда размер шрифта установлен на> 100%, экран Delphi [0] .workarea.rect возвращает размеры, которые отражают масштабирование шрифта. E.G., с графической картой для экрана 0, установленным на 1920x1080, экран [0] .workarea.rect.width возвращает 1280 (при условии, что нет вертикальной панели задач и т. Д.). Однако я не могу найти способ программно определить, что ширина возвращается как 1280 из-за масштабирования шрифта против 1280, являющегося фактической настройкой видеокарты. Может ли кто-нибудь сказать мне, как сделать 1 или более из следующих: любые 1 из них предоставят мне информацию, которая мне нужна, чтобы различать возможности: 1) определить, какой процент шрифта; 2) определить, что такое аппаратное разрешение.Размеры экрана Delphi со шрифтами> 100% против фактического разрешения

+2

Стоп, имеющие точек на дюйм виртуализацию и вам не нужно, чтобы задать вопрос , –

ответ

0

GetDeviceCaps Функция возвращает параметр, определенный индексом, выбранного контекста устройства.

Работает в Windows 7, дает истинное значение размера шрифта для моего рабочего стола (96 точек на дюйм значение по умолчанию «малый шрифт 100%»)

dc := GetDC(0); 
    Memo1.Lines.Add(Format('hor res %d', [GetDeviceCaps(dc, HORZRES)])); 
    lp := GetDeviceCaps(dc, LOGPIXELSX); 
    Memo1.Lines.Add(Format('logx %d percents %d%%', [lp, 100 * lp div 96])); 

    hor res 1280 
    logx 120 percents 125% 
+0

А что делать, если виртуализация dpi активна? –

+0

@David Heffernan Авторская 1280/1920 путаница - это свидетельство виртуализации точек на дюйм? – MBo

+0

Да, это явное свидетельство того, что –

Смежные вопросы