使用 for 循环 Qt c++ 绘制圆圈

Draw circles using for-loop Qt c++

本文关键字:绘制 c++ Qt for 循环 使用      更新时间:2023-10-16

我想在C++中使用Qt画7个圆

我想使用 for 循环;但是,我无法做到,我实际上想使用窗口的宽度来平均间隔我的圆圈,这也没有奏效。我错在哪里。我是编程新手。:)

这是我的代码:

for (int i = 0; i <= 6;i++)
{
    int x = 0;
    int y = (width()/6);
    x =y+x;
    canvas.drawEllipse(x, 40, 20, 20);
}
好的,我

正在研究它,现在我有五个带有此代码的圆圈

     int x = 0;
     for (int i = 0; i <= 6;i++)
   {
    x = x+(width()/6);
    canvas.drawEllipse(x, 40, 20, 20);
    }

但我希望第一个圆圈从 canvas.drawEllipse(0, 40, 20, 20);

此外,如果我从一个页面切换到另一个页面,我如何更改一个圆圈的颜色。它是一个大约 7 页的应用程序,每个圆圈代表一个页面,因此例如,如果我在第 1 页上,圆圈 1 应该是绿色的。
我被告知要为此创建一个函数,但是我该如何引用我的页面和圆圈来实现它。谢谢。

让我们在这里做一些数学运算。

设Screen_Width屏幕的宽度(以像素为单位)。Screen_Height是屏幕的高度,以像素为单位。

理想圆的宽度与直径相同,或半径为 2 *。
然而,这是现实,我们必须考虑线宽。所以圆的实际宽度是:Diameter + 2 * Circle_Line_Width;

此外,这是现实而不是理想的条件,我们希望圆圈之间的间距。
让间距为圆外线之间的距离,以像素为单位。

Circle_Quantity圈数。

因此,圆所占的总宽度为:

Circle_Width = Diameter + 2 * Circle_Line_Width + (Space_Between_Circles / 2);

圆(带间距)的可用空间为:

Available_Circle_Space = Screen_Width / Circle_Quantity;

现在诀窍来了,定位圆心。
让我们找出圆属性的值。求解直径:

Diameter = Circle_Width / (2 * Circle_Line_Width + (Space_Between_Circles/2));

请记住,圆心将是直径的中点,即 Diameter / 2 .

所以,第一个中心点是:

  0 /*Left edge ordinate */
  + (Space_Between_Circles/2)
  + Circle_Line_Width
  + (Diameter / 2)

下一个中心点位于:

Previous_Center_Point
  + (Space_Between_Circles/2)
  + Circle_Line_Width
  + (Diameter / 2)

这应该向您展示如何制作一个for循环来绘制所有圆圈。

切换循环中的两个语句:

int x = 0;
for (int i = 0; i <= 6;i++)
{
    canvas.drawEllipse(x, 40, 20, 20); //0 on 1st iteration
    x = x+(width()/6); //x = 0 + (width()/6), which will be used on 2nd iteration, etc.
}

要在第一个循环中使用 x 作为 0,请保存添加width()/6,直到您首次使用它之后。