写一段代码,实现的功能是已知起始点坐标和圆弧半径绘图,结果画出来的弧跟起始点之间有空隙,求指导。想要实现的功能就是连接两条线的端点,画出的图如下:
代码如下:
Dim Xc As Double '定义圆心坐标
Dim Yc As Double
Dim Rstart As Double '定义其实弧度
Dim Rend As Double '定义终点弧度
Dim pi As Double
pi = 3.1415926
Dim X as Double'定义左边点的坐标
Dim Y as Double
Dim Length as Double'定义的是两点之间的水平距离,也就确定了右边点的坐标
Xc = X + Length / 2
Yc = Y - Sqr(Radius * Radius - Length * Length / 4)
Rstart = pi / 2 - arcsin(Length / (2 * Radius))
Rend = pi / 2 + arcsin(Length / (2 * Radius))
Picture1.Circle (Xc, Yc), Radius, RGB(0, 0, 255), Rstart, Rend
'定义反正弦函数
Private Function arcsin(X) As Double
Dim pi
pi = 3.1415926
If Abs(X) = 1 Then
arcsin = pi / 2
Else
arcsin = Atn(X / Sqr(-X * X + 1))
End If
End Function
代码如下:
Dim Xc As Double '定义圆心坐标
Dim Yc As Double
Dim Rstart As Double '定义其实弧度
Dim Rend As Double '定义终点弧度
Dim pi As Double
pi = 3.1415926
Dim X as Double'定义左边点的坐标
Dim Y as Double
Dim Length as Double'定义的是两点之间的水平距离,也就确定了右边点的坐标
Xc = X + Length / 2
Yc = Y - Sqr(Radius * Radius - Length * Length / 4)
Rstart = pi / 2 - arcsin(Length / (2 * Radius))
Rend = pi / 2 + arcsin(Length / (2 * Radius))
Picture1.Circle (Xc, Yc), Radius, RGB(0, 0, 255), Rstart, Rend
'定义反正弦函数
Private Function arcsin(X) As Double
Dim pi
pi = 3.1415926
If Abs(X) = 1 Then
arcsin = pi / 2
Else
arcsin = Atn(X / Sqr(-X * X + 1))
End If
End Function
解决方案 »
- 关于自编控件创建属性子值
- 怎样把32位的图标提取出来
- 文件选择窗口弹出后怎么自动输入文件名称
- winsock问题,连带二进制数据转换。这几天搞得人都要晕过去了。
- 如何判断一个控件数组中的控件已经加载
- 使用setup factory生成的安装文件,安装之后只有卸载程序,为什么没有运行程序?
- 我有两个简单的问题,大家帮帮我的忙 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
- VC 的 BOOL 和 VB 的 Boolean 有区别吗?
- 怎么做msn文本输入框的那种效果:如果文本框的文本为空时敲回车不做任何反应,不为空则送出字符串
- ActiveReport问题!!!!
- VB 怎么用16进制替换指定的字节 (具有唯一性)
- 请教Vb的WebBrowser控件如何新建会话窗口,即独立Session那种?
Picture1.ScaleMode = vbPixels'π尽量用最多的位数'
pi = 3.1415926535898'圆心在下面应该是加法'
Yc = Y + Sqr(Radius * Radius - Length * Length / 4)
很多年前刚学vb的时候做时钟练手,直接在Picturebox里画,遇到的问题比这多了,最后发现全都是数学计算的问题,一大堆cos sin的,数学底子薄啊,好在最后都解决了。
楼主慢慢调
Dim Yc As Double
Dim Rstart As Double '定义起点弧度
Dim Rend As Double '定义终点弧度
Dim pi As Double
Dim X As Double '定义左边点的坐标
Dim Y As Double
Dim Length As Double '定义的是两点之间的水平距离,也就确定了右边点的坐标
'定义反正弦函数
Private Function arcsin(X As Double) As Double
pi = 3.14159265
If Abs(X) = 1 Then
arcsin = pi / 2
Else
arcsin = Atn(X / Sqr(-X * X + 1))
End If
End FunctionPrivate Sub Command1_Click()
pi = 3.14159265
Picture1.ScaleMode = 3 'Pixel
X = 100
Y = 100
Picture1.Circle (X, Y), 4, RGB(0, 0, 0)
Length = 200
Picture1.Circle (X + Length, Y), 4, RGB(0, 0, 0)
Radius = Length / 2 + 10
Xc = X + Length / 2
Yc = Y - Sqr(Radius * Radius - Length * Length / 4)
Rstart = 3 * pi / 2 - arcsin(Length / (2 * Radius))
Rend = 3 * pi / 2 + arcsin(Length / (2 * Radius))
Picture1.Circle (Xc, Yc), Radius, RGB(255, 0, 0)
Picture1.Circle (Xc, Yc), Radius, RGB(0, 0, 255), Rstart, Rend
End Sub