WPF读书笔记:2.Base Brushes
2008-07-04 00:29 无常 阅读(854) 评论(0) 编辑 收藏 举报Color structure:
Color结构体位于System.Window.Media命名空间中,Color使用3个byte属性分别表示R、G、B三原色的颜色分量。当R=G=B=0时为黑色,当R=G=B=255时为白色。此外,有个byte类型的A属性表示此颜色的“不透明度”,其值为0时表示为全透明,值为255时表示不透明。这些都是有winform System.Drawing命名空间中的Color相同的。
此外,Color还支持表示scRGB(也称为scRGB64,因原色使用64位表达)颜色空间。Color结构还有4个float类型的属性scA、scR、scG、scB来描述scRGB颜色空间,值范围为<=1 && >=0,它们和RGB颜色空间中的A、R、G、B属性相对应。
改变Color对象的sc[ARGB]属性时相应的[ARGB]属性也会被影响,反之亦然。
Colors类封装有一百多种常用的颜色。
SolidColorBrush:
最简单的单色画刷,
窗口背景颜色即改为全红色。
Brushes类定义有141个标准单色画刷,但这些画刷处于“冻结(frozen)”状态,如果尝试修改这些画刷的值时就会抛出异常:
但是可以复制一份没有处于冻结状态的画刷副本,如以下代码是允许的:
LinearGradientBrush 线性渐变画刷:
渐变画刷可以将二种或以上的颜色混合渐变。渐变画刷最简单的使用:
运行后的效果:
渐变画刷中定义的点是相对于填充区域范围,如(0,0)是填充区域左上角的点,(1,1)为右下角。如将以上创建画笔对象代码改为:
即为垂直方向渐变:
渐变画刷还可以使用GracientStop类来指定多个“关键颜色”点,如定义彩虹画刷:
效果如下:
RadialGradientBrush 放射状渐变画刷:
与线性画刷不同的是放射状画刷不需要定义起始和终止点,它默认的中心点是(0.5,0.5),即填充区域的中心。
效果如下:
当然射线中心点和X/Y方向的渐变倍数也是可以任意修改的:
brush.GradientOrigin = new Point(0, 0);
brush.RadiusX = 1.5;