Qt | 关于画笔的使用 QPen
前言:
QPen 是 Qt 中封装画笔功能的类,它定义了 QPainter 如何画线或者或者画轮廓线。QPen 类一共有 5 个属性:线的样式、线的粗细、线的颜色、线的端点样式和线与线之间的连接方式。
画笔的属性:
1.线的样式:
线的样式通过 Qt::PenStyle 定义,Qt::PenStyle 的枚举值为:
Qt::NoPen: 没有线;
Qt::SolidLien: 一条简单的实线(默认值);
Qt::DashLine: 由一些像素分隔的短线;
Qt::DotLine: 由一些像素分隔的点;
Qt::DashDotLine: 轮流交替的短线和点;
Qt::DashDotDotLine: 一个短线,两个点;
Qt::CustomDashLine: 自定义样式;设置画笔样式的函数为:setStyle();
例:
设置自定义的线条样式的函数:setDashOffset() 和 setDashPattern();
例:
2.线的粗细:
线的粗细也可称为线的宽度。用于设置画笔宽度的函数为:setWidth(),参数的单位是像素,参数类型为整型。如果要获取画笔当前的宽度,可以调用 width() 函数,返回值得单位也是像素,返回值的类型也是整型。
另外,Qt 为了增加画笔宽度的精度,还提供了一对浮点数版本的函数:
void setWidthF(qreal width)
qreal widthF() const
3.线的颜色:
线的颜色可以用 QColor 类的对象来表示,用于设置画笔颜色的函数是 setColor()。如果要获取画笔的颜色,可以调用 color() 函数。
4.线的端点样式:
线的端点样式包括直角顶点、圆角顶点和平顶点。顶点样式对于宽度是 0 的 QPen 是无效的。线的端点样式对应的枚举值为:
Qt::FlatCap: 平顶点,不覆盖线条端点的正方形线条端点(默认值);
Qt::SquareCap: 直角顶点,覆盖端点并超出其一半宽度的正方形线端点;
Qt::RoundCap: 园顶点。
5.线与线之间的连接方式:
线与线之间的连接方式用于定义两条相交线的连接点是如何绘制的。线与线之间的连接样式同样对于宽度是 0 的 QPen 是无效的。线与线之间的连接样式有斜角连接、倒角连接、圆角连接三种,对应的枚举值为:
Qt::MiterJoin: 线的外缘延伸成一定角度,并填充此区域(默认值)(尖的);
Qt::BevelJoin: 两条线之间的三角形缺口被填满(平的);
Qt::RoundCap: 两条线之间被圆弧填充(圆弧);
构造一个画笔:
QPen 提供了 5 种构造函数:
QPen(); 不带参数,创建一个黑色的、SolidLine 样式、宽度为 1 像素的画笔。
QPen(Qt::PenStyle style); 用样式 style 创建一个黑色的、宽度为 1 像素的画笔。
QPen(const QColor &color); 用颜色 color 创建一个 SolidLine 样式、宽度为 1 像素的画笔。
QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin); 用指定的画刷、宽度、风格、端点样式和连接样式创建一个画笔。
QPen(const QPen &pen); 用已有的画笔来创建另一个画笔。
版权声明: 本文为 InfoQ 作者【YOLO.】的原创文章。
原文链接:【http://xie.infoq.cn/article/87b4e8991967dfc688afa20ec】。未经作者许可,禁止转载。
评论