使用四段绘制贝塞尔曲线

Drawing bezier curve using four segments

我正在尝试绘制使用 4 个控制点绘制曲线的贝塞尔曲线。然而,当我 运行 我的程序时,用鼠标点击 4 次后我只看到一个像素被绘制,我的代码中是否遗漏了什么?我怎样才能让它正常工作?


void MyWindow::mousePressEvent(QMouseEvent *event)
{
    if(event->button() == Qt::LeftButton)
    {
        x0 = event->x();
        y0 = event->y();

        point.setX(x0);
        point.setY(y0);
        std::vector<QPoint> myv;
        myv.push_back(point);
        counter+=1;
        std::cout<<counter<<std::endl;

        if(counter%4==0) {
            drawBezier(myv[0], myv[1], myv[2], myv[3]);
        }
      
    }

    update();

}

myv 是局部变量,您不会将其状态保存到新的 mousePressEvent 获取一些“调试”信息并查看您在 drawBezier 函数中收到的信息。