更改应用主题时更改图像颜色
Change image color when app theme changed
我正在用 UWP(C# 和 XAML)编写应用程序。我有这个代码:
<Image Source="ms-appx:///Assets/Image.svg"/> <!-- svg is preferred but not required -->
Image.svg 是单色(黑色)图像。
我想要实现的是图像根据 system/app 主题(浅色主题 = 黑色图像,深色主题 = 白色图像)改变颜色,而无需分离白色和黑色图像文件。
此时图像为黑色
有可能吗?
我将不胜感激任何帮助和建议。
Change image color when app theme changed
根据您的要求,我们建议您使用BitmapIcon
接近。 BitmapIcon
具有前景色 属性,您可以在主题更改时动态设置它。另一种方法是为不同的主题定义不同的图像,然后将图像源与 ThemeResource
标记绑定。
例如
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<BitmapIcon
VerticalAlignment="Center"
Foreground="{ThemeResource IconColor}"
UriSource="ms-appx:///Assets/Butterfly.png"
Visibility="Visible" />
<Image
Grid.Row="1"
VerticalAlignment="Center"
Source="{ThemeResource MyImage}" />
</Grid>
资源
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light">
<ImageSource x:Key="MyImage">ms-appx:///Assets/png-icon.png</ImageSource>
<SolidColorBrush x:Key="IconColor" Color="Black" />
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<ImageSource x:Key="MyImage">ms-appx:///Assets/Butterfly.png</ImageSource>
<SolidColorBrush x:Key="IconColor" Color="White" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
我正在用 UWP(C# 和 XAML)编写应用程序。我有这个代码:
<Image Source="ms-appx:///Assets/Image.svg"/> <!-- svg is preferred but not required -->
Image.svg 是单色(黑色)图像。 我想要实现的是图像根据 system/app 主题(浅色主题 = 黑色图像,深色主题 = 白色图像)改变颜色,而无需分离白色和黑色图像文件。
此时图像为黑色
有可能吗?
我将不胜感激任何帮助和建议。
Change image color when app theme changed
根据您的要求,我们建议您使用BitmapIcon
接近。 BitmapIcon
具有前景色 属性,您可以在主题更改时动态设置它。另一种方法是为不同的主题定义不同的图像,然后将图像源与 ThemeResource
标记绑定。
例如
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<BitmapIcon
VerticalAlignment="Center"
Foreground="{ThemeResource IconColor}"
UriSource="ms-appx:///Assets/Butterfly.png"
Visibility="Visible" />
<Image
Grid.Row="1"
VerticalAlignment="Center"
Source="{ThemeResource MyImage}" />
</Grid>
资源
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light">
<ImageSource x:Key="MyImage">ms-appx:///Assets/png-icon.png</ImageSource>
<SolidColorBrush x:Key="IconColor" Color="Black" />
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<ImageSource x:Key="MyImage">ms-appx:///Assets/Butterfly.png</ImageSource>
<SolidColorBrush x:Key="IconColor" Color="White" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>