Color和SolidColorBrush澄清之间的区别

时间:2014-01-30 21:00:58

标签: wpf silverlight xaml graphics colors

好的,这一直困扰着我,我还没有真正找到任何明确的答案,因为Color&之间存在差异的原因/原因。 SolidColorBrush所以我想知道是否有人可以就此教育我。

我已经知道使用上的差异,比如我可以在依赖项中使用SolidColorBrush,就像我说的那样;

<SolidColorBrush x:Key="BlahBrush" Color="#FFFFFFFF"/>
<Border Background="{StaticResource BlahBrush}"/>

然后说我在EasingColorKeyFrame类似的内容中抛出相同的资源;

<EasingColorKeyFrame KeyTime="0" Value="{StaticResource BlahBrush}" />

那么它会让我觉得它是一个SolidColorBrush ....除此之外,我可以通过资源链将其声明为Color类似的来解决这个问题;

<Color x:Key="OriginalBlahBrush">#FFFFFFFF</Color>
<SolidColorBrush x:Key="BlahBrush" Color="{StaticResource OriginalBlahBrush}"/>

并且它会很好....但是我可以再次利用Color的{​​{1}}属性并且可以获得相同的行为,而不会有类似的分离;

SolidColorBrush

所以我想我的问题是,Colors和SolidColorBrush类之间的固有区别是什么,以及它们使用中奇怪怪癖的原因是什么?我猜想System.Windows.Media.Colors与System.Windows.Media.SolidColorBrush的原因是什么,如果它们都只是给出了一个坚实的颜色?

询问心灵想要知道! :)

3 个答案:

答案 0 :(得分:2)

来自Brush的备注部分:

  

画笔使用其输出“绘制”或“填充”某个区域。不同的画笔   有不同类型的输出。有些画笔用一个画一个区域   纯色,其他具有渐变,图案,图像或绘图。该   以下列表描述了不同类型的WPF画笔:

     

•SolidColorBrush:绘制纯色区域。

     

•LinearGradientBrush:使用线性渐变绘制区域。

     

•RadialGradientBrush:使用径向渐变绘制区域。

     

•ImageBrush:用图像绘制一个区域(用。表示)   ImageSource对象)。

     

•DrawingBrush:使用绘图绘制区域。图纸可能包括   矢量和位图对象。

     

•VisualBrush:使用Visual对象绘制区域。一个VisualBrush   使您能够复制应用程序的一部分内容   进入另一个地区;它对于创建反射效果非常有用   和放大屏幕的部分。

答案 1 :(得分:0)

ColorSolidColorBrush的组成部分,其中一个构造函数具有Color-type参数。如果要填充表单上的某些组件,则首先需要创建颜色,然后根据之前创建的颜色创建SolidColorBrush。就像真正的透明画笔和调色板一样,您需要在其中浸泡画笔以绘画/填充某些东西。 Color对象更“底层”,您可以使用A,R,G,B参数设置一些颜色。 SolidColorBrushes是一种用于填充对象的画笔(来自System.Windows.Media.Brush的继承)。您可以在一个画笔中组合颜色。

答案 2 :(得分:0)

我的理解如下。

  • 颜色代表特定的颜色{红色,蓝色等。
  • SolidColorBrush代表特定的颜色以及使用该颜色绘制区域的能力。
  • 颜色是一种结构数据类型,用于保存颜色的详细信息。
  • SolidColorBrush是一个包含Color对象并添加不透明度和变换属性的类。
  • 颜色列出预设的颜色数量。 颜色c = Colors.Red;
  • 笔刷列出笔刷的预设数量。 SolidColorBrush br = Brushes.Red;