3个回答
展开全部
用极坐标方程啊。
根据椭圆的极坐标方程:x=P*cosA,y=P*sinA,如果在中心点旋转角度为B的话,那极坐标方程就是
x=P*cos(A+B),y=P*sin(A+B),将COS(A+B)和SIN(A+B)展开,解关于A的方程,得到
sinA=。。。cosA=....
因此可以在VB里面用object.pset(sinA,cosA)画椭圆了
x1,y1为椭圆中心点移动的坐标
控件自己添加进去就OK了。
代码如下:
Private Sub Command1_Click()
Picture1.Cls
Picture1.Scale (-100, 100)-(100, -100)
Picture1.AutoRedraw = True
Dim x, y As Double
Dim Alfa, Ceta As Double
Dim x1, y1 As Double
Dim r, g, bb As Double
r = r + 10
g = g
bb = bb + r
x1 = Val(Text4.Text)
y1 = Val(Text5.Text)
a = Val(Text2.Text)
b = Val(Text3.Text)
Text1.Text = Val(Text1.Text) + 10
Ceta = Val(Text1.Text) / 180 * 3.1415926
For Alfa = -3.1415926 To 3.1415926 Step 0.003
x = a * Cos(Alfa)
y = b * Sin(Alfa)
m = ((x) * Cos(Ceta) + (y) * Sin(Ceta)) + x1
n = (-x) * Sin(Ceta) + (y) * Cos(Ceta) + y1
Picture1.PSet (m, n), RGB(r, 0, bb)
Next Alfa
Picture1.Line (0, 100)-(0, -100), vbRed
Picture1.Line (100, 0)-(-100, 0), vbRed
End Sub
根据椭圆的极坐标方程:x=P*cosA,y=P*sinA,如果在中心点旋转角度为B的话,那极坐标方程就是
x=P*cos(A+B),y=P*sin(A+B),将COS(A+B)和SIN(A+B)展开,解关于A的方程,得到
sinA=。。。cosA=....
因此可以在VB里面用object.pset(sinA,cosA)画椭圆了
x1,y1为椭圆中心点移动的坐标
控件自己添加进去就OK了。
代码如下:
Private Sub Command1_Click()
Picture1.Cls
Picture1.Scale (-100, 100)-(100, -100)
Picture1.AutoRedraw = True
Dim x, y As Double
Dim Alfa, Ceta As Double
Dim x1, y1 As Double
Dim r, g, bb As Double
r = r + 10
g = g
bb = bb + r
x1 = Val(Text4.Text)
y1 = Val(Text5.Text)
a = Val(Text2.Text)
b = Val(Text3.Text)
Text1.Text = Val(Text1.Text) + 10
Ceta = Val(Text1.Text) / 180 * 3.1415926
For Alfa = -3.1415926 To 3.1415926 Step 0.003
x = a * Cos(Alfa)
y = b * Sin(Alfa)
m = ((x) * Cos(Ceta) + (y) * Sin(Ceta)) + x1
n = (-x) * Sin(Ceta) + (y) * Cos(Ceta) + y1
Picture1.PSet (m, n), RGB(r, 0, bb)
Next Alfa
Picture1.Line (0, 100)-(0, -100), vbRed
Picture1.Line (100, 0)-(-100, 0), vbRed
End Sub
2013-06-15
展开全部
circle (x,y),r,color,,,aspectaspect为纵横轴比
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-15
展开全部
circle已经封装得很好了啊!不然你是想用api?没那个必要啊同志!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询