当前位置: 首页 > 工具软件 > Brushes > 使用案例 >

WPF中关于Brushes和Colors的使用场景理解

宦高岑
2023-12-01

  在WPF的运用过程中,可能很多人对Brushes和Colors这两个类不太熟悉,但是可以肯定的是,我们经常都会用到这两个类。那什么情况下会用到这两个类呢?如下示例代码所示:

Brushes使用场景:

<Button Background="AliceBlue">A Button</Button>

Colors使用场景:

<Button>B Button
    <Button.Background>
        <SolidColorBrush Color="AliceBlue" />
    </Button.Background>
</Button>

  以上两种实现方式都能给Button按钮设置背景颜色,当然大多数时候我们都喜欢使用第一种方式,个中缘由不言自明。但是长期的这种使用过程中,我们都忽视了Brushes的功劳,那怎么去理解这个类呢?通过查阅Button类的定义,我们发现,Background是由Brush这个类定义的,说到Brush就不得不提一下SolidColorBrush,也即是纯色画刷。我们想要设置某个控件的背景颜色为纯色的时候,必然会用到这个画刷,那在Brushes使用场景代码里,是怎么用到这个画刷呢?查阅Brushes的定义,我们发现这个类里定义了很多静态的只读属性,如:AliceBlue、Red、Green,这些属性都是通过SolidColorBrush来进行定义的。因此我们在使用上图第一个示例代码的时候,实际的后台逻辑代码应如下:

Button btn = new Button();
btn.Content = "后台按钮1";
btn.Background = Brushes.AliceBlue;

  说到这里,基本上Colors的使用场景也应该差不多明了了,Colors也是和Brushes一样的工作原理,SolidColorBrush的属性Color是由Color类定义的,在给SolidColorBrush赋值系统预定义颜色的时候,会调用Colors里定义好的由Color定义的静态属性对象,实际后台示例代码如下:

Button btn = new Button();
btn.Content = "后台按钮2";
var scb = new SolidColorBrush();
scb.Color = Colors.AliceBlue;
btn.Background = scb;

  以上就是我对这两个类的理解,如有错误,请欢迎指正。

 类似资料: