扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
用极坐标方程啊。
十多年的龙凤网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整龙凤建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“龙凤网站设计”,“龙凤网站推广”以来,每个客户项目都认真落实执行。
根据椭圆的极坐标方程: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
Const PI = 3.14159
Dim alfa As Single
Dim x As Single, y As Single, rx As Single, ry As Single
Dim cenx As Single, ceny As Single
Private Sub Form_Load()
cenx = 2000 '绘图中心
ceny = 1600
alfa = 0
rx = 1500 'x轴半径
ry = 900 'y轴半径
Do
alfa = alfa + 0.1
x = rx * Cos(alfa)
y = ry * Sin(alfa)
Me.PSet (x + cenx, y + ceny) '点绘
Loop Until alfa = 2 * PI
Me.Picture = Me.Image
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
alfa = alfa + 0.1
If alfa = 2 * PI Then alfa = 0
x = rx * Cos(alfa)
y = ry * Sin(alfa)
Me.Cls
Me.Circle (x + cenx, y + ceny), 120
Me.PSet (x + cenx, y + ceny)
End Sub
你说的是GDI+里的方法吗?
我记得没有drawCircle这个方法的,只有画DrawElipse椭圆和DrawArc这2个方法,分别表示画椭圆(画圆统一用DrawElipse方法)和画弧(画椭圆弧统一用DrawArc方法)。
统一的方法如何实现椭圆、圆的呢?其实是用椭圆、圆的外切矩形来表示的。椭圆跟圆的唯一区别是它们外切矩形的长宽比不同,圆是一个正方形,椭圆是矩形,而且椭圆需要考虑有可能画转了角度的情况的椭圆,长轴与x轴是有特定角度的。
窗体上添加一个按钮,在该按钮的单击事件里编写代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'声明窗体的Me.CreateGraphics对象
Dim MyGraphics As Graphics = Me.CreateGraphics
Dim Cx As Integer = 150 '圆心的X坐标
Dim Cy As Integer = 150 '圆心的Y坐标
Dim R As Integer '圆的半径
'绘制半径为R的圆
For R = 5 To 100 Step 5
MyGraphics.DrawEllipse(Pens.Black, New Rectangle(Cx - R, Cy - R, 2 * R, 2 * R))
Next
End Sub
‘用黑色画笔绘制一组同心圆,半径从5开始,增量为5。
说明:
DrawEllipse是VB.Net的Graphics类的绘制椭圆的方法;他有几种格式,上面使用的是一种;
DrawEllipse(画笔的颜色,绘制椭圆所需要的矩形区域)
其中:绘制椭圆所需要的矩形区域,如果被定义为正方形,就演变成绘制圆,定义该区域由死个数值确定,第1个数值,确定该区域左上角的X坐标,第2个数值,确定该区域左上角的Y坐标,第3个数值,确定该区域的宽度,第4个数值,确定该区域的高度。
例如1:
DrawEllipse(Pens.Black, New Rectangle(150, 150, 50, 50))
就是以圆心坐标为(100,100),绘制半径为50 的圆。其实在VB.NET中,是告诉系统在以左上角坐标(150,150),边长为50的正方形里绘制内切圆。理解了是在正方形里绘制内切圆,就可以通过数学计算,知道如何绘制了。
同理例如2:
DrawEllipse(Pens.Black, New Rectangle(150, 150, 100, 50))
就是以圆心坐标为(100,100),绘制半径为50 的圆。其实在VB.NET中,是告诉系统在以左上角坐标(150,150),长轴为100,短轴为50的内切椭圆。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流