使用QT很多年了,一直没有系统性的总结一下QPen,今天又全面复习总结一下。
QPen 类定义了QPainter 应该怎样画线条和形状的轮廓。
对于QPen 画笔有以下几个重要特性。
1.color(): 定义了线条的颜色。使用setColor(QColor(255, 0, 0, 100))定义画笔的颜色。
2.width():定义了线条的宽度。使用setWidth(int width)设置线条的宽度。
这里有个特殊情况,要说明一下,按照我们的理解,如果setWidth(0)的话,应该是线条宽度为0,应该是不显示线条啊。可是实际不是这样,当设置为线条宽度为0的时候,相当于使用了sosmetic(美化笔,自己翻译的,可能不对),意味着画笔的宽度一直是1像素宽。
如果我们想不显示线条的话,怎么办?有两种方式:
1> setStyle(Qt::NoPen)
2> setWidth(-1)
这两种方式效果是一样的,都是不显示轮廓。
3.style() : 定义了线条的类型,使用setStyle()设置画笔线条的类型。
具体线条的类型和形状 有Qt::solidLine, 虚线Qt::dotLine, Qt::dashLine具体如下
Pen Style
Qt provides several built-in styles represented by the Qt::PenStyle enum:
如果style设置为Qt::dashLine时候,我们怎样可以设置实线与空线(space)的比例呢?或者换种说法,我们怎样可以设置dashLine 两段实线相隔多远呢? 幸好,我们有种方法 setDashPattern();来控制dashLine这种线条实线与虚线的比例。具体用法如下
pen.setDashPattern(QVector<qreal>() << 10 << 5 ) //实线:空线的比例为10 :5 。每10个单位长度的实线,然后每5个单位长度的虚线。
4.capStyle() :设置线条两头的形状,可以是矩形,也可以是圆形的头。通过setCapStyle()设置线条端点形状。
有以下选择和相关形状。
Qt::SquareCap |
Qt::FlatCap |
Qt::RoundCap |
Constant |
Description |
|
Qt::FlatCap |
a square line end that does not cover the end point of the line.//方形头部,但是并不包含最后一个点 |
|
Qt::SquareCap |
a square line end that covers the end point and extends beyond it by half the line width.//方形顶端,并且包含最后一个点 |
|
Qt::RoundCap |
a rounded line end. //顶端是半圆形 |
5.joinStyle() 是两条线的连接点的类型。可以通过setJoinStyle()来设置两条线之间的连接点形状。
enum Qt::PenJoinStyle
Qt::BevelJoin |
Qt::MiterJoin |
Qt::RoundJoin |
Constant |
Value |
Description |
Qt::MiterJoin |
0x00 |
线的外缘延伸成一个角度,这个区域被填充。 |
Qt::BevelJoin |
0x40 |
两条线之间的三角形缺口填满了。 |
Qt::RoundJoin |
0x80 |
两条线之间有弧度,就是很圆滑 |
Qt::SvgMiterJoin |
0x100 |
一个斜角连接对应一个斜切的定义加入SVG 1.2小规格。 |