我有一些PNG具有透明度,可用于WPF/C#应用程序中的按钮。 现在我有两个版本的每个PNG,一个用于普通视图,一个用于悬停,每个都有不同的颜色。但是,我真的很想只有一个PNG,并且可能会使所有不透明的白色(每个图像都是一种颜色,除了形状以外没有其他细节)。 然后可以使用SolidColorBrush更改每个颜色,或者?类似的,在我的XAML创建普通/哈弗版本为静态资源 事情是这样的:用XAML中的透明度更改PNG的显示颜色
<Image Key="BtnMenu" Source="Images/Menu.png" Fill="ButtonNormalBrush" />
<Image Key="BtnMenuHover" Source="Images/Menu.png" Fill="ButtonHoverBrush" />
是啊,我完全是编造的“填充”的事情...... 但基本的想法是,我有一个ResourceDictionary,其中包含在整个应用程序中使用的颜色方案,这使得我可以在一个位置更改我在应用程序中使用的约6种颜色中的任何一种颜色,并更新每个引用该颜色的控件的颜色。但是t他不能做的一个地方就是那些按钮的PNG。 (理想的是,将来我会让ResourceDictionary在运行时加载,以使应用程序具有备用“皮肤”..但现在PNG让我无法做到这一点)。
编辑:顺便说一句,如果解决方案需要一个转换器或用代码写的东西,那就完全没问题。
我很喜欢WPF,但它还是很新的...例子将不胜感激。 –
@AdamHaile:好吧,如果你想转换像素,你可以使用['WriteableBitmap'](http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx),我真的不能给你一个例子,因为它是一个痛苦的使用,它取决于你的文件的格式,多年以来没有使用它。 –