• 用C++ Qt实现类似Photoshop的钢笔工具


    因为工作上的需求,需要实现一个类似Photoshop里面的钢笔工具,

    分析一下它的功能,包括:

    1. 有两种点:节点和控制点,节点是构成图形的基本端点,控制点是影响贝塞尔曲线的系数。

    2. 创建节点:鼠标左键点击空白区域,即可创建一个方形节点。

    3. 删除节点:鼠标左键单击一个已存在的节点,即可将当前所选的节点删除。

    4. 移动节点:按住Ctrl键,长按鼠标左键在节点上,可以将节点拖拽,如果节点本身含有两个控制点,那么也会跟随一起移动。

    5. 移动控制点:按住Ctrl或者Alt键,长按鼠标左键在控制点上,可以将该控制点单独移动。

    6. 节点转换和旋转控制点:原本是方形节点,按住Alt键,再长按鼠标左键在其方形节点上,再拖拽可实现转换成圆形节点,并且生成两个控制节点,随着鼠标的位置不断变换,直到鼠标左键松开。

    7. 闭环节点:超过3个节点(含3个)的情况下,再鼠标左键单击第一个节点,即可让线条首位相接。

     

    实现核心:

    利用Qt提供的 QPainterPath 类进行绘制,quadTo()为二次贝塞尔曲线,cubicTo()为三次贝塞尔曲线。

    当两两圆形节点相邻时,就使用三次贝塞尔曲线,

    一个圆形节点和一个方形节点之间,就用二次贝塞尔曲线。

    Qt实现的成果demo演示视频:https://live.csdn.net/v/216724

  • 相关阅读:
    3--jsp编译指令和动作指令
    2-hello world
    1.搭建JSP开发环境
    4-Http通信
    P1879 [USACO06NOV]玉米田Corn Fields
    P3110 [USACO14DEC]驮运Piggy Back
    P2327 [SCOI2005]扫雷
    P1004 方格取数
    P2854 [USACO06DEC]牛的过山车Cow Roller Coaster
    P1353 [USACO08JAN]跑步Running
  • 原文地址:https://www.cnblogs.com/hyb1/p/16385057.html
Copyright © 2020-2023  润新知