【问题标题】:WiX not rendering images correctlyWiX 无法正确渲染图像
【发布时间】:2011-12-02 04:28:57
【问题描述】:

我正在尝试编写一个自定义 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>

我在下面包含了结果对话框的 sn-p,背景是原始图像(16x16 .ico)。如您所见,图像已向上缩放,并且图像周围没有透明度。我尝试过 8 位和 24 位位图以及图标,但它们都产生相同的结果。有什么我做的明显错误的事情吗?

更新:

如果您想知道动态图像的工作原理,请查看相关部分:

<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 按钮也是受这个值控制的。

【问题讨论】:

  • 提出一个单独的问题..很想知道..您是否在动态更改图像?我的意思是图像会根据条件出现?
  • 是的;所以有一个 TestResult_Success 控件,如果 LOGON_VALID = 1 则显示绿色勾号,如果 LOGON_VALID = 0 则隐藏它。图像大小相同,位置相同。
  • 能否分享一些动态更新图片的代码?
  • 我已更新原始问题以显示我的解决方案。不聪明,但它有效:-)
  • 非常感谢...我尝试了很多但从未得到...我错过了我从您的代码中获得的'Text="WixUI_FailureImg"'。 :)

标签: bitmap wix wix3.5


【解决方案1】:

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

【讨论】:

  • 很遗憾,WiX 文档没有明确说明这一点。最后,我只尝试了一系列值,发现对于我的 16x16 图像,将 Width 和 Height 设置为 12,并将 IconSize 设置为 16,产生了预期的结果(在默认的视觉主题/字体大小/ DPI 设置,如您所见)。
  • @DavidKeaveny 我还必须将我的图像放大 1.3333333 倍我在 WiX UI 中设置的大小。这是一个非常荒谬的步骤 (stackoverflow.com/questions/28997742/…) 非常感谢你发回对你有用的东西,大卫。它极大地帮助了我。
猜你喜欢
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
  • 2019-01-25
相关资源
最近更新 更多