如何创建 QRadialGradient

发布于 2024-10-06 16:35:46 字数 455 浏览 1 评论 0原文

我正在尝试创建一个带有渐变填充的圆圈:

//I want the center to be at 10, 10 in the circle and the radius to be 50 pixels
QRadialGradient radial(QPointF(10, 10), 50);
radial.setColorAt(0, Qt::black); //I want the center to be black
radial.setColorAt(1, Qt::white); //I want the sides to be white
painter.setBrush(QBrush(radial));
painter.drawEllipse(/*stuff*/);

但是,所有这些完成的只是向我显示一个完全白色的圆圈。我该如何纠正这个问题?

I am trying to create a circle with a gradient fill:

//I want the center to be at 10, 10 in the circle and the radius to be 50 pixels
QRadialGradient radial(QPointF(10, 10), 50);
radial.setColorAt(0, Qt::black); //I want the center to be black
radial.setColorAt(1, Qt::white); //I want the sides to be white
painter.setBrush(QBrush(radial));
painter.drawEllipse(/*stuff*/);

However, all this accomplishes is to show me a totally white circle. How can I rectify this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云仙小弟 2024-10-13 16:35:46

它将是白色的,因为您使用了错误的坐标。

如果您为小部件设置渐变(在您的情况下,它只是一个小区域),您可以在错误的位置绘制椭圆,并且它肯定会是白色:

正确设置渐变的坐标。例如:

QRadialGradient radial(QPointF(100, 100), 50);
// ...
painter.drawEllipse(50,50,100,100);

It will be white because you are using the wrong coordinates.

If you set the gradient for your widget (in your case it's only a small area), you can paint your ellipse in the wrong place, and it will be surely white:

Set the gradient's coordinates correctly. e.g:

QRadialGradient radial(QPointF(100, 100), 50);
// ...
painter.drawEllipse(50,50,100,100);
姜生凉生 2024-10-13 16:35:46

更改

radial.setColorAt( 0, Qt::black );

为:

radial.setColorAt( n, Qt::black );

n 是 0 到 1 之间的数字。

Change:

radial.setColorAt( 0, Qt::black );

To:

radial.setColorAt( n, Qt::black );

n being a number between 0 and 1.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文