我有一些透明度的PNG,我用于WPF / C#应用程序中的按钮。 现在我有两个版本的每个PNG,一个用于普通视图,一个用于悬停,每个版本都有不同的颜色。但是,我真的只想拥有一个单一的PNG,并且可能会制作一些不透明的白色(每个图像都是一种颜色,除了形状之外没有任何细节。 是否可以使用SolidColorBrush或类似方法更改每个颜色,并在我的XAML中创建Normal / Hover版本作为静态资源? 像这样:
<Image Key="BtnMenu" Source="Images/Menu.png" Fill="ButtonNormalBrush" />
<Image Key="BtnMenuHover" Source="Images/Menu.png" Fill="ButtonHoverBrush" />
是的,我完全编造了“填充”的东西...... 但基本的想法是我有一个ResourceDictionary,它包含整个应用程序中使用的颜色方案,这使得我可以在一个地方更改我在应用程序中使用的任何约6种颜色,并且每次更新引用那种颜色的控件......但我不能做的一个地方就是那些按钮的PNG。 (理想情况下,我将在ResourceDictionary中创建一些可以在运行时加载的东西,使应用程序具有备用的“皮肤”......但是现在PNG使我无法做到这一点。)
编辑:顺便说一下,如果解决方案需要转换器或代码编写的内容,那就完全没了问题。
答案 0 :(得分:0)
嗯......如果您创建了一个网格,并将图像放在该网格中,您可以将网格背景设置为填充颜色。
编辑:这是一些代码:
<Button>
<Grid Background="SkyBlue">
<Image Source="img.png" Stretch="None" />
</Grid>
</Button>
答案 1 :(得分:-1)
您可以尝试在悬停图片上应用ShaderEffect
Effect
或创建转换图片的markup extension。另一种可能性是将这种逻辑封装在Image
的子类中。
答案 2 :(得分:-1)
有一个解决方案:http://msdn.microsoft.com/ru-ru/library/ms752364.aspx 您可以使用另一个ImageSource中的新Format-object创建ImageSource。 Format对象指定Image的颜色掩码。