WiX неправильно отображает изображения - PullRequest
6 голосов
/ 02 декабря 2011

Я пытаюсь написать собственное диалоговое окно WiX, которое в рамках своего рабочего процесса показывает изображение ошибки в ответ на определенные условия.Тем не менее, WiX, кажется, игнорирует мои размеры и отображает, как он чувствует себя хорошо.Вот мой код:

<Binary Id="WixUI_FailureImg" SourceFile="$(sys.SOURCEFILEDIR)..\Resources\Failure.ico" />
<Control Id="TestResult_Failure" Type="Icon" IconSize="16" X="15" Y="206" Width="16" Height="16" Text="WixUI_FailureImg">
    <Condition Action="hide">LOGON_VALID = "1"</Condition>
    <Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>

Я включил фрагмент результирующего диалога ниже, с исходным изображением (16x16 .ico) на заднем плане.Как вы можете видеть, изображение было масштабировано вверх, и вокруг него нет прозрачности.Я пробовал также 8-битные и 24-битные растровые изображения, но все они дают одинаковый результат.Есть ли что-то, что я делаю явно неправильно?

example of borked image

ОБНОВЛЕНИЕ:

Если вам интересно, как работают динамические изображения,вот соответствующий раздел:

<Control Id="TestResult_Success" Type="Icon" IconSize="16" X="15" Y="210" Width="12" Height="12" Text="WixUI_SuccessImg">
    <Condition Action="hide">LOGON_VALID = "0"</Condition>
    <Condition Action="show">LOGON_VALID = "1"</Condition>
</Control>
<Control Id="TestPrompt_Success" Type="Text" X="35" Y="210" Width="322" Height="10" Text="!(loc.SqlSelectDlgConnectionValid)">
    <Condition Action="hide">LOGON_VALID = "0"</Condition>
    <Condition Action="show">LOGON_VALID = "1"</Condition>
</Control>
<Control Id="TestResult_Failure" Type="Icon" IconSize="16" X="15" Y="210" Width="12" Height="12" Text="WixUI_FailureImg">
    <Condition Action="hide">LOGON_VALID = "1"</Condition>
    <Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>
<Control Id="TestPrompt_Failure" Type="Text" X="35" Y="210" Width="322" Height="10" Text="!(loc.SqlSelectDlgConnectionInvalid)">
    <Condition Action="hide">LOGON_VALID = "1"</Condition>
    <Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>

Как вы можете догадаться из скриншота, страница связана с установлением соединения SQL;У меня есть пользовательское действие, которое создает строку подключения на основе ввода пользователя и пытается ее проверить.Если это верно (LOGON_VALID = "1"), я получаю изображение галочки и некоторый текст, чтобы сказать, что все хорошо, иначе я получаю значок предупреждения и некоторый текст, чтобы предупредить пользователя.Конечно, кнопка «Далее» также управляется этим значением.

1 Ответ

6 голосов
/ 02 декабря 2011

X, Y, Width и Height указаны в «единицах установки», а не в пикселях.Преобразование единиц установки в пиксели зависит от визуальной темы, размера шрифта и настроек DPI.Лучше всего, чтобы он выглядел хорошо при настройках по умолчанию.

...