【问题标题】:How to draw a heart in qt creator [closed]如何在 qt creator 中画一颗心 [关闭]
【发布时间】:2015-01-31 13:58:36
【问题描述】:

我需要在 qt creator 上画一颗心,但是我在使用 drawArc 时遇到了问题。我知道我以错误的方式使用它,但我不知道该怎么做。请帮忙?这是用c++画心的代码。

HeartDrawableStrategy::draw(QPainter &painter, QRect &rect, double xRatio, double yRatio, QPoint &pos, int size,)
{
    //Define the heart points
    int newPointX = pos.x();
    int newPointY = pos.y()+size/4;
    QPoint leftPoint = QPoint(newPointX*xRatio, newPointY*yRatio);

    newPointX = pos.x()+size/2;
    newPointY = pos.y() + size;
    QPoint bottomCenterPoint = QPoint(newPointX*xRatio, newPointY*yRatio);

    newPointX = pos.x() + size;
    newPointY = pos.y() + size/4;
    QPoint rightPoint = QPoint(newPointX*xRatio, newPointY*yRatio);

    newPointX = pos.x() + size/2;
    newPointY = pos.y() + size/4;
    QPoint middlePoint = QPoint(newPointX*xRatio, newPointY*yRatio);

    newPointX = pos.x() + size/4;
    newPointY = pos.y();
    QPoint topLeftPoint = QPoint(newPointX*xRatio, newPointY*yRatio);

    newPointX = pos.x() + (size*3/4);
    newPointY = pos.y();
    QPoint topRightPoint = QPoint(newPointX*xRatio, newPointY*yRatio);

    //Draw the heart
    QLine line = QLine(leftPoint, bottomCenterPoint);
    painter.drawLine(line);

    line = QLine(bottomCenterPoint, rightPoint);
    painter.drawLine(line);

    line = QLine(leftPoint, middlePoint);
    painter.drawArc(line);

    line = QLine(middlePoint, rightPoint);
    painter.drawArc(line);

}

【问题讨论】:

    标签: c++ qt draw


    【解决方案1】:

    您当前创建了一条 QLine,并尝试使用它创建一条弧线。这行不通。

    根据QT Doc 您需要 X 中的起点、Y 中的起点、宽度、高度、起点角度和跨度角度。 像这样:

    painter.drawArc(x, y, width, height, startAngle, spanAngle);
    

    X 和 Y 是左上角,startAngle 和 spanAngle 必须指定为 1/16 度,即一个完整的圆等于 5760 (16 * 360)。角度的正值表示逆时针方向,而负值表示顺时针方向。 0 度位于 3 点钟位置。

    代码如下:

    painter.drawArc(10, 20, 80, 60, (30 * 16), (120 * 16);
    

    会画这个:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多