问题的引出
在WPF中,如果一个button只有文字,没有图标,当disable的时候,文字就会变成灰色。如果这个button的内容中有图片,disable的时候,不会发生任何变化。那么,问题来了,如何使得图片在显示的时候也可以变成灰色,或者使得它变得不一样呢?
解决方案
两种方案,一种是图片变成灰色,另一种是变成半透明。对于方案一,当图片是彩色的时候,效果很好,但是如果图片本身是灰色的,则效果较差。第二种方案则相反。
图片变成灰色
如果想要使得图片变成灰色,那么需要用到类FormatConvertedBitmap
。图片的显示方式,彩色或者灰色,是通过DestinationFormat
来控制的。参考WPF 将图片进行灰度处理
如果想要在C#代码中使用这个类,那么必须:
FormatConvertedBitmap newFormatConvertedBitmap = new FormatConvertedBitmap();
newFormatConvertedBitmap.BeginInit();
newFormatConvertedBitmap.Source = oldFormatConvertedBitmap.Source;
newFormatConvertedBitmap.DestinationFormat = PixelFormats.Gray8;
newFormatConvertedBitmap.EndInit();
如果想要在xaml里面使用这个类:
<!-- Normal button with icon gray & text is disabled -->
<Button x:Name="IconGrayButton" Width="180" Height="32" IsEnabled="False" Margin="10">
<StackPanel Orientation="Horizontal">
<Image x:Name="IconGrayButtonImage">
<Image.Source>
<FormatConvertedBitmap Source="{StaticResource ButtonIcon}" DestinationFormat="Gray8">
</FormatConvertedBitmap>
</Image.Source>
</