当我设置一个Image
来填充窗口时,它似乎渲染在其他控件的顶部,并且通常会使绘制窗口变得一团糟。文件中的顺序似乎没有帮助,但是如果我把它放在它自己的Page
部分中,它的表现会好一些。
有没有办法在窗口中的所有内容后面显示图像?
此外,其他控件似乎没有正确呈现在它的顶部(文本有白色背景,按钮有白色方块),我猜他们需要在某处设置透明模式?
编辑:
这是问题的一个示例,按钮和复选框从鼠标悬停变得可见,并且文本从选择中变得可见:
我无法将其Image
作为背景工作,但是我能够使用窗口背景获得我想要的东西。
Window
允许您使用在 中指定的图像,Theme/@ImageFile
然后将Window/@SourceX
和Window/@SourceY
偏移量指定为 0。但这还不够,因为sWindow
引用的字体背景将覆盖窗口图像背景。您需要使用没有指定背景的字体。
<主题 xmlns="http://wixtoolset.org/schemas/thmutil/2010" ImageFile="background.png"> <窗口宽度="485" 高度="300" HexStyle="100a0000" FontId="0" SourceX="0" SourceY="0" >#(loc.Caption)</Window> <字体 ID="0" 高度="-12" 重量="500" Foreground="000000"Background="FFFFFF">Segoe UI</Font>
我还必须解决另外两个问题:
是的,有可能。如果您有一个主题中所有页面都相同的静态图像,那么您可以将Image
元素放在所有页面元素之上。或者,如果您希望每页有不同的背景,则将图像放在页面的首位。我像这样组织我的主题:
<Theme>
<Window />
<Font /> <!-- as many as necessary -->
<Image /> <!-- global background image -->
<Page> <!-- repeat for each page -->
<Image /> <!-- per-page background image -->
<other controls />
控制元素的顺序反向定义了 Z 顺序。第一个控件位于底部,从那里向下的控件堆叠在顶部。这就是为什么Image
首先需要背景。
至于透明文本,它可能具有不同程度的善意。首先要摆脱白色背景,您需要从用于透明文本Background
的元素中删除属性。Font
缺少Background
属性意味着对文本使用空画笔,它本质上是透明的。
透明度的好坏程度取决于控制。复选框似乎从不尊重透明文本。此外,如果重绘透明文本,它也无法正常工作。您会看到遗留下来的旧文本。因此,透明度仅适用于Text
未更新的情况。
无论如何,希望以上内容可以帮助您入门。如果您想为帮助提高透明度或主题做出贡献,我建议您查看src\dutil\thmutil.cpp
. 也许你可以让我们弄清楚如何让它完美地工作。
在尝试为 WIX 设置主题时,我刚刚发现了一个关键字段。
可见=“是”
并不意味着元素可见。这意味着元素始终可见。在每一页上。