发布网友 发布时间:2022-04-22 05:57
共3个回答
热心网友 时间:2022-04-22 06:12
先说明一下circle的语法:
object.Circle Step(x, y), radius, [color, start, end, aspect]
object 可选的。 对象表达式,其值为“应用于”列表中的对象。如果object 省略,具有焦点的窗体作为object。
Step 可选的。关键字 ,指定圆、椭圆或弧的中心,它们相对于当前 object 的 CurrentX 和 CurrentY 属性提供的坐标。
(x, y) 必需的。 Single (单精度浮点数),圆、椭圆或弧的中心坐标。object 的 ScaleMode 属性决定了使用的度量单位。
radius 必需的。Single (单精度浮点数),圆、椭圆或弧的半径。 object 的 ScaleMode 属性决定了使用的度量单位。
color 可选的。Long (长整型数),圆的轮廓的 RGB 颜色。如果它被省略,则使用 ForeColor 属性值。可用 RGB 函数或 QBColor 函数指定颜色。
start, end 可选的。 Single (单精度浮点数),当弧、或部分圆或椭圆画完以后,start 和 end 指定(以弧度为单位)弧的起点和终点位置。其范围从 -2 pi 到 2 pi 。起点的缺省值是0; 终点的缺省值是2 * pi。
aspect 可选的。 Single (单精度浮点数),圆的纵横尺寸比。缺省值为 1.0,它在如何屏幕上都产生一个标准圆(非椭圆)。
Private Sub Form_Paint()
Dim pi As Single
pi = 3.1415926
x = Form1.ScaleWidth / 2 'x是窗体宽度的1/2
y = Form1.ScaleHeight / 2 'y是窗体高度的1/2
Form1.Circle (x, y), 500 '大圆以x,y为圆心,500为半径
Form1.Circle (x - 250, y), 250, , 0, pi '小圆半径为大圆1/2,颜色缺省,0、pi分别为圆弧的起点角度与终点角度(用弧度计算)
Form1.Circle (x + 250, y), 250, , pi, 2 * pi
End Sub
我并没有做得那么复杂,但效果就相对简单一点,这样你应该能看懂,可以通过修改圆的坐标、半径、起角终角来看一下效果,应该就很好理解了。至于填充和动态旋转效果我就没做了,免得你越看越昏,如果你需要可以给你做出来。
希望对你有帮助。
热心网友 时间:2022-04-22 07:30
首先你要明白太极的阴阳鱼是怎么样标准的画出来的~
说白了,阴阳鱼就是一黑一白两个圆形边贴着边,围着这两个圆的接触点同向转动的运动轨迹,阴阳鱼眼就是这个两个圆形放大了的圆心~
下边是我的代码,可能有些繁琐,不过你能看懂过程就最好了~
需要额外添加一个Timer控件,在Form_Load以后一段时间你会看到阴阳鱼的形成过程,然后太极图就会转起来~
Option Explicit
Dim PI As Double'π值
Dim CenterPointX As Long'两个圆围绕旋转的圆心X
Dim CenterPointY As Long'两个圆围绕旋转的圆心Y
Dim TempX1 As Long'第一个圆的圆心X
Dim TempY1 As Long'第一个圆的圆心Y
Dim TempX2 As Long'第二个圆的圆心X
Dim TempY2 As Long'第二个圆的圆心Y
Dim Radius As Long'两个圆的半径,因为两个圆等大,所以就定义了一个变量
Dim Angle As Double'旋转的角度
Private Sub Form_Load()
CenterPointX = 4000'设置起始旋转点X
CenterPointY = 4000'设置起始旋转点Y
Radius = 1000'半径为1000
Angle = 0'起始旋转角为0
TempX1 = CenterPointX'第一个圆的起始位置X
TempY1 = 4000 - Radius'第一个圆的起始位置Y
TempX2 = CenterPointX'第二个圆的起始位置X
TempY2 = 4000 + Radius'第二个圆的起始位置Y
PI = 4 * Atn(1)'给∏赋值,这里让机器计算出比较标准的值,3.1415926...
'下边初始化计时器
Timer1.Interval = 50
Timer1.Enabled = True
End Sub
'下边是计时器过程
Private Sub Timer1_Timer()
Me.FillStyle = 0'设置窗体的填充模式,你可以改为别的值试下效果
Me.FillColor = vbBlack'设置窗体的填充颜色,第一个圆为黑色
Me.ForeColor = vbBlack'设置窗体的线条颜色,也为黑色
Me.Circle (TempX1, TempY1), Radius'这里开始画第一个圆,Circle函数的参数都是什么意思你明白吧?~
'下边画第一个阴阳鱼的"鱼眼"
Me.FillColor = vbWhite'因为第一个圆是黑色,所以"眼"画为白色
Me.ForeColor = vbWhite'见上边解释
Me.Circle (TempX1, TempY1), Radius / 3'画一个稍小的圆
'同样,下边画第二个圆,白色
Me.FillColor = vbWhite
Me.ForeColor = vbWhite
Me.Circle (TempX2, TempY2), Radius
'黑"鱼眼"
Me.FillColor = vbBlack
Me.ForeColor = vbBlack
Me.Circle (TempX2, TempY2), Radius / 3
'---到这里第一次绘制完成了---
'---下边为下一次绘制做下准备-
Angle = Angle + 1'两个圆围绕旋转的角度加1
If Angle > 360 Then'大于360时,说明转了一整圈了,所以从0开始重新旋转
Angle = 0
End If
'下边根据三角函数计算下一次两个圆的圆心位置,自己画个图看下吧~我懒,就不画了,^^
TempX1 = CenterPointX + Sin(Angle * PI / 180) * Radius
TempY1 = CenterPointY - Cos(Angle * PI / 180) * Radius
'第二个圆可以懒省事,不通过计算获取其圆心位置,因为其和第一个圆与围绕心是对称的,可以通过坐标转换来获取圆心位置
TempX2 = CenterPointX - (TempX1 - CenterPointX)
TempY2 = CenterPointY + (CenterPointY - TempY1)
'---到这里,一次绘制就完成了---
End Sub
'希望你能看得懂~
热心网友 时间:2022-04-22 09:05
Private Sub Form_Paint()
Scale (-200, 200)-(200, -200) '定义坐标
'两个小圆
Circle (-50, 0), 10
Circle (50, 0), 10
'大圆
Circle (0, 0), 100
'两个半圆
Circle (50, 0), 50, , 3.1415, 0
Circle (-50, 0), 50, , 0, 3.1415
End Sub