这一篇我们聊聊wpf中的画刷,在wpf中如果想玩各种花哨,那么如何使用画刷则是我们的基本功,首先看一下类图
从图中可以看出,wpf有5种画刷和1种自定义画刷,都是继承自基类Brush,我们看看基类中有哪些好玩的东西。
这里有3个比较感兴趣的属性,分别属于”透明度“和”图像转换“,好,下面我们一一解说。
实心画刷是我们用的最多的,也是最简单的一个,其实也就是填充色的意思,一个很简单的例子:
前面一章我们提到,Qt 绘图系统定义了两个绘制时使用的关键属性:画刷和画笔。前者使用QBrush
描述,大多用于填充;后者使用QPen
描述,大多用于绘制轮廓线。
QBrush
定义了QPainter
的填充模式,具有样式、颜色、渐变以及纹理等属性。
画刷的style()
定义了填充的样式,使用Qt::BrushStyle
枚举,默认值是Qt::NoBrush
,也就是不进行任何填充。我们可以从下面的图示中看到各种填充样式的区别:
画刷的color()
定义了填充模式的颜色。这个颜色可以是 Qt 预定义的颜色常量,也就是Qt::GlobalColor
,也可以是任意QColor
对象。
QPen
定义了用于QPainter
应该怎样画线或者轮廓线。画笔具有样式、宽度、画刷、笔帽样式和连接样式等属性。画笔的样式style()
定义了线的样式。画刷brush()
用于填充画笔所绘制的线条。笔帽样式capStyle()
定义了使用QPainter
绘制的线的末端;连接样式joinStyle()
则定义了两条线如何连接起来。画笔宽度width()
或widthF()
定义了画笔的宽。注意,不存在宽度为
0 的线。假设你设置 width 为 0,QPainter
依然会绘制出一条线,而这个线的宽度为 1 像素。也就是说,画笔宽度通常至少是 1 像素。
这么多参数既可以在构造时指定,也可以使用 set 函数指定,完全取决于你的习惯,例如:
使用构造函数的优点是代码较短,但是参数含义不明确;使用 set 函数则正好反过来。
默认的画笔属性是纯黑色,0 像素,方形笔帽(Qt::SquareCap
),斜面型连接(Qt::BevelJoin
)。
下面是画笔样式的示例:
你也可以使用setDashPattern()
函数自定义样式,例如如下代码片段:
笔帽定义了画笔末端的样式,例如:
连接样式定义了两条线连接时的样式,例如:
注意,我们前面说了,QPainter
也是一个状态机,这里我们所说的这些属性都是处于这个状态机之中的,因此,我们应该记得是否要将其保存下来或者是重新构建。