WiX无法正确渲染图像

Dav*_*eny 6 wix bitmap wix3.5

我正在尝试编写一个自定义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>
Run Code Online (Sandbox Code Playgroud)

我在下面包含了一个结果对话框的片段,背景中包含原始图像(16x16 .ico).如您所见,图像已向上缩放,图像周围没有透明度.我已经尝试了8位和24位位图以及图标,但它们都产生相同的结果.我做的事情显然是错的吗?

borked图像的例子

更新:

如果您想知道动态图像的工作原理,请参阅相关章节:

<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>
Run Code Online (Sandbox Code Playgroud)

您可以从屏幕截图中猜到,该页面与建立SQL连接有关; 我有一个自定义操作,根据用户的输入创建一个连接字符串,并尝试验证它.如果它是有效的(LOGON_VALID = "1"),我得到一个刻度图像和一些文字说一切都很好,否则我得到一个警告图标和一些文字来警告用户.当然,Next按钮也由该值控制.

Bob*_*son 6

X,Y,宽度和高度位于"安装程序单位"中,而不是像素.将安装程序单位转换为像素取决于可视主题,字体大小和DPI设置.最好的办法是让它在默认设置下看起来不错.

  • 令人遗憾的是,WiX文档并未明确这一点.最后,我只是尝试了一系列的值,并发现对于我的16x16图像,将宽度和高度设置为12,并将IconSize保持为16,产生了预期的结果(在默认的可视主题/字体大小/正如您所注意到的DPI设置). (2认同)