QT6 源,十章绘图(14)路径绘制 QPainterPath篇三:矩形转换,路径中的元素,路径百分比,交并运算, 符号运算符,路径平移。QPainterPathStroker似是为了为路径描边即轮廓

(18) 矩形转换

在这里插入图片描述

(19) 路径中的元素

在这里插入图片描述

++以下是详细代码

    //这个枚举描述了用于在子路径中连接顶点的元素类型。
    //请注意,那些闭合子路径,使用`addEllipse()、addRegion()和`addText()、
    //  addPath()、`addPolygon()、`addRect()这些便捷函数添加的元素,
    //实际上是通过`moveTo()、lineTo()`和cubicTo()函数以一系列独立元素的形式添加到路径中的。
    enum ElementType {
             MoveToElement, //一个新的子路径。另见moveTo()。
             LineToElement, //一条线。另见lineTo()。
            CurveToElement, //一条曲线。另见 cubicTo()和 quadTo()。   //Curve曲线
        CurveToDataElement  //在CurveToElement元素中描述曲线所需的额外数据。
    };

    //The QPainterPath::Element class specifies the position and type of a subpath.
    class Element
    {
    public:
        qreal x;            //该变量存储元素位置的 x坐标。
        qreal y;            //该变量存储元素位置的 y坐标。
        ElementType type;   //此变量持有元素的类型。

        bool isMoveTo () const { return type ==  MoveToElement; }
        bool isLineTo () const { return type ==  LineToElement; }
        bool isCurveTo() const { return type == CurveToElement; }

        operator QPointF () const { return QPointF(x, y); }
        //类型转换运算符函数,得到路径中元素的起点。

        bool operator== (const Element & e) const //判断本元素和形参中元素是否是同一元素。
        {   return qFuzzyCompare(x, e.x) && qFuzzyCompare(y, e.y) && type == e.type; }
        inline
        bool operator!= (const Element & e) const { return !operator==(e); }
    };
    int                       elementCount     () const;      //返回画家路径中的元素数量。
    QPainterPath::Element     elementAt        (int i) const; //返回画家路径中在索引 i处的元素。
    void                   setElementPositionAt(int i, qreal x, qreal y);
    //将索引为index的元素的x和y坐标设置为x和y。

++测试一下

在这里插入图片描述

(20)路径百分比

在这里插入图片描述

(21) 路径的交并运算

在这里插入图片描述

(22) 符号运算符

在这里插入图片描述

(23) 路径平移

在这里插入图片描述

(24) QPainterPathStroker 似是为了为路径描边即轮廓

在这里插入图片描述

(25)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhangkeji

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值