我想在 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
;
此外,这是现实而非理想条件,我们希望圆圈之间有间距。
设 Spacing 为圆外线之间的距离,以像素为单位。
设 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
循环来绘制所有圆圈。
关于c++ - 使用for-loop Qt c++画圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27176766/