WiX无法正确渲染图像

时间:2011-12-02 04:28:58

标签: bitmap wix 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>

我在下面包含了一个结果对话框的片段,背景中包含原始图像(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"),我会得到一个刻度图像和一些文字来说明一切都很好,否则我会收到一个警告图标和一些文字来警告用户。当然,Next按钮也由该值控制。

1 个答案:

答案 0 :(得分:6)

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