欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt之绘制椭圆、椭圆弧上任意点

程序员文章站 2022-03-02 10:29:18
...

参考代码

void MainWindow::paintEvent(QPaintEvent *event)
{
    event->accept();
 
    QPainter painter(this);
    painter.setPen(QPen(Qt::red,2));
    //移动坐标中心点到窗口中心,默认左上角为起点,往右下为正方向
    painter.translate(width()/2,height()/2);
    //画一个圆,圆心为起点(上一步移动到的正中),半径100px
    const int A=150; //横轴
    const int B=100; //竖轴
    painter.drawEllipse(QPoint(0,0),A,B);
    //计算45度角圆边上的点,角度需要转换为弧度
    const double a=qDegreesToRadians((double)45);
    const int R=A*B/sqrt(pow(A*sin(a),2)+pow(B*cos(a),2)); //计算对应角度的半径
    const int x=0+R*cos(a);
    const int y=0+R*sin(a);
    //因为屏幕坐标系y轴正方向和笛卡尔坐标系相反,所以y取反就是我们要的结果了
    painter.drawLine(QPoint(0,0),QPoint(x,-y)); //y取反
}

运行效果

Qt之绘制椭圆、椭圆弧上任意点

参考

Qt绘图:求圆和椭圆上任意角度点的坐标

相关标签: Qt