gpt4 book ai didi

qt - 如何使用 QPainter 类围绕圆圈编写文本?

转载 作者:行者123 更新时间:2023-12-05 00:29:08 26 4
gpt4 key购买 nike

问题很简单!我想要这样的东西。要么使用 QPainter类或使用 Qt 图形框架 :

enter image description here

最佳答案

有几种方法可以使用 QPainterPath 来做到这一点。指定 here .

这是该页面的第二个示例:

#include <QtGui>
#include <cmath>

class Widget : public QWidget
{
public:
Widget ()
: QWidget() { }
private:
void paintEvent ( QPaintEvent *)
{
QString hw("hello world");
int drawWidth = width() / 100;
QPainter painter(this);
QPen pen = painter.pen();
pen.setWidth(drawWidth);
pen.setColor(Qt::darkGreen);
painter.setPen(pen);

QPainterPath path(QPointF(0.0, 0.0));

QPointF c1(width()*0.2,height()*0.8);
QPointF c2(width()*0.8,height()*0.2);

path.cubicTo(c1,c2,QPointF(width(),height()));

//draw the bezier curve
painter.drawPath(path);

//Make the painter ready to draw chars
QFont font = painter.font();
font.setPixelSize(drawWidth*2);
painter.setFont(font);
pen.setColor(Qt::red);
painter.setPen(pen);

qreal percentIncrease = (qreal) 1/(hw.size()+1);
qreal percent = 0;

for ( int i = 0; i < hw.size(); i++ ) {
percent += percentIncrease;

QPointF point = path.pointAtPercent(percent);
qreal angle = path.angleAtPercent(percent); // Clockwise is negative

painter.save();
// Move the virtual origin to the point on the curve
painter.translate(point);
// Rotate to match the angle of the curve
// Clockwise is positive so we negate the angle from above
painter.rotate(-angle);
// Draw a line width above the origin to move the text above the line
// and let Qt do the transformations
painter.drawText(QPoint(0, -pen.width()),QString(hw[i]));
painter.restore();
}
}

};

int main(int argc, char **argv)
{
QApplication app(argc, argv);
Widget widget;
widget.show();
return app.exec();
}

关于qt - 如何使用 QPainter 类围绕圆圈编写文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17753657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com