WPF 带 ICON 的 button 状态切换 (Enable/Disable)

问题的引出

在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>
               </
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值