Как обнаружить и «исправить» настройки DPI с помощью Inno Setup? - PullRequest
1 голос
/ 05 июля 2011

Я создал установку с пользовательскими страницами мастера и пользовательскими фоновыми изображениями. Проблема с нестандартными системами DPI.

Когда я запускаю эту настройку, фоновые изображения не отображаются должным образом. Как определить размер DPI и использовать пользовательские настройки для страниц мастера?

Ответы [ 3 ]

4 голосов
/ 20 ноября 2014

Динна упомянула, что DPI можно определить следующим образом:

Вы можете определить размер DPI с помощью свойства TGraphicsObject.PixelsPerInch и загрузить другое изображение.

Тем не менее, документация InnoSetup предполагает, что TGraphicsObject не имеет атрибута PixelsPerInch, вместо этого он является атрибутом TFont объектов.

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

procedure CheckDPI;
var
  CurrentDPI, StandardDPI, MediumDPI, LargeDPI: Integer;
begin
  { Get the current DPI }
  CurrentDPI  := WizardForm.Font.PixelsPerInch;

  { Store defaults determined from Windows DPI settings }
  StandardDPI := 96;  { 100% }
  MediumDPI   := 120; { 125% }
  LargeDPI    := 144; { 150% }

  if (CurrentDPI >= StandardDPI) and (CurrentDPI < MediumDPI) then 
  begin
    { Execute some custom code for small to medium DPI }
  end
  else if (CurrentDPI >= MediumDPI) and (CurrentDPI < LargeDPI) then
  begin
    { Execute some custom code for medium to large DPI }
  end
  else if (CurrentDPI >= LargeDPI) then
  begin
    { Execute some custom code for large DPI or above }
  end;
end;
4 голосов
/ 07 июля 2011

«Самый правильный» способ - использовать альтернативные изображения для режима маленьких и больших шрифтов. «Немного менее правильный» метод состоит в том, чтобы заполнить фон, чтобы он показывал это вместо уменьшения. «Очень неправильный» метод состоит в том, чтобы попытаться настроить макет / размер формы в соответствии с требованиями.

Размер DPI можно определить с помощью свойства TGraphicsObject.PixelsPerInch и загрузить другое изображение.

0 голосов
/ 15 мая 2014

Определите следующие функции самостоятельно, чтобы обмануть Inno Setup:

function ScaleX(Value: Integer): Integer;
begin
  Result := Value;
end;

function ScaleY(Value: Integer): Integer;
begin
  Result := Value;
end;

Bing GO ~

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...