VB画三角形,帮忙改下

来源:百度知道 编辑:UC知道 时间:2024/05/25 02:42:20
画的都是直角三角形,大家帮忙改下,谢谢代码:
Private Sub Command1_Click()
Picture1.Cls

a = Val(Text1)
b = Val(Text2)
c = Val(Text3)
If Not ((a + b > c) And (a + c > b) And (b + c > a)) Then MsgBox "三条边长度不正确,重新输入!": Exit Sub
cosA = (b * b + c * c - a * a) / (2 * b * c)
sinA = Sqr(1 - cosA * cosA)
'确定坐标
XA = 0: YA = 0
XB = c: YB = 0
XC = b * cosA: YC = b * sinA
'确定坐标系

Picture1.Scale (-3, YC + 3)-(c + 3, -3)
'画线
Picture1.Line (XA, YA)-(XB, YB)
Picture1.Line -(XC, YC)
Picture1.Line -(XA, YA)

End Sub

Picture1.Scale (-3, YC + 3)-(c + 3, -3) 这句有问题,picture1的横竖坐标比例 与 屏幕实际横竖坐标比例不一致。

改正方法:
按照 picture1 的高宽比,设定 picture1.scale
当然,在这里要求picture1的容器的 scale 宽高比 与其在屏幕的范围内的点阵实际的宽高比一致。

我都觉得说的有点乱,希望你能明白
==================================
设置坐标系可以这样写:

'确定坐标系
Dim k As Single
Picture1.Parent.ScaleMode = 3
k = Abs(Picture1.Height / Picture1.Width) / ((yc + 6) / (c + 6)) 'yc+6 即 (yc + 3) - ( -3 ) , c+6 同理
If k > 1 Then
Picture1.Scale (-3, (yc + 3) * k)-(c + 3, -3 * k)
Else
Picture1.Scale (-3 / k, (yc + 3))-((c + 3) / k, -3)
End If

经过测试,改程序可以画出任何三角形。但是:
1、在几何学上,存在误差导致不十分正确。如果要改进这个问题需要改进角度的计算方法。
2、在编程上,应增加:a.文本框清空功能;b.在三边分别标注长度
3、也可能你想只用来话直角三角形?而现在是画任意的?

请你说明,你的需要。

视觉差吧,画出来有些仔细看看不是直角的
或者就是picture的宽高设置不一样,你自定义一下picture的坐标系看看

没有啊,什么样的都能画