Windows Phone 8中的自动暗/亮图标支持

Mar*_*del 19 windows-phone-7 windows-phone windows-phone-8

我认为这是一个非常普遍的问题,但我找不到合适的解决方案.众所周知,WP支持黑暗和浅色主题.用户可以更改主题,并且有多种方法可以覆盖他的决定并在您选择的颜色主题中显示所有内容.但是,我只是想对这两种主题类型做出反应,我想以正确的颜色显示图标.

如果使用应用程序栏,则可以从许多内置图标中进行选择,这些图标将自动从亮到暗反转,反之亦然.

为什么没有对普通图像的支持?例如:我想显示一个电话图标.我从内置图标中选择了一个,并将其从Microsoft SDK文件夹复制到我项目的Image文件夹中.如果用户使用黑暗主题,一切都会很好,因为白色电话图标将在黑色背景上可见.但如果他切换到灯光主题,图标将是隐形的,因为它是白色的白色.

我完全了解文本框或背景颜色的样式资源,它们使用手机的重音或主题颜色.但是为什么不支持我作为Image添加到我的XAML页面的简单图标?

当然,如果用户处于黑暗或轻度模式,我可以在页面的构造函数中检测到.然后我会加载黑色或白色版本的电话图标.但每次访问页面时都会进行此检查,并减慢所有操作.每次添加主题感知图像时手动添加主题检查也很烦人.

有没有解决方案,只适用于XAML?或者至少容易维护?为什么我不能从一开始就使用SDK中的内置图像?它们已经有深色和浅色版本,并且已经在应用程序栏中使用.

Joh*_*alk 36

如果你想让图标在动作栏中起作用,只需要白色(如果是黑暗主题)和黑色(如果是浅色主题),那么你可以将图像作为不透明蒙版添加到矩形,如下所示:

<Rectangle Fill="{StaticResource PhoneForegroundBrush}" Width="48" Height="48" >
    <Rectangle.OpacityMask>
        <ImageBrush ImageSource="/Images/my.icon.png" />
    </Rectangle.OpacityMask>
</Rectangle>
Run Code Online (Sandbox Code Playgroud)

my.icon.png是白色图像,就像您可以为动作栏选择的那样.

  • @JohnCroneh:Ye,OpacityMask不适用于Universal Apps,根据您的情况和图像类型,有几种不同的方法可以实现相同的结果,我发现这篇有用的博客文章不久前:http://www.visuallylocated .com/post/2014/07/07/Alternatives-to-OpacityMask.aspx,我在为我的通用应用程序解决此问题时使用的. (2认同)