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)

谢谢

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhangzhangkeji

谢谢支持

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

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

打赏作者

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

抵扣说明:

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

余额充值