使用 for 循环 Qt c++ 绘制圆圈
Draw circles using for-loop Qt c++
我想在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
,直到您首次使用它之后。
相关文章:
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- SFML 文本未绘制在窗口上
- 如何在快板的屏幕中显示子位图的绘制?
- 如何绘制自定义形状的元素?
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 绘制文本问题
- 在 QT C++中绘制/操作多边形
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 在现代OpenGL中,绘制GL_TRIANGLE奇怪的z轴行为的填充圆
- OpenGL 着色器不绘制任何东西 - 糟糕的精灵类
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?