Построение треугольника на VB 6.0 (Чертёж)

Узнай цену своей работы

Формулировка задачи:

Добрый день. Имеется проблема с написанием программы На (VB 6.0). А именно: пользователь вводит размеры 3 сторон, и если треугольник построить можно то она рисует его по вводимым данным. Говорят нужно использовать теорему косинусов. Но как это сделать я плохо представляю. Буду благодарен за советы и код.

Решение задачи: «Построение треугольника на VB 6.0 (Чертёж)»

textual
Листинг программы
Private Type POINTAPI
    X As Long
    Y As Long
End Type
 
Dim cone(2) As POINTAPI, hBrush As Long, hRgn As Long, color As Long
Dim a As Long, b As Long, c As Long
 
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As Any, _
ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function Polygon Lib "gdi32" (ByVal hDC As Long, _
lpPoint As Any, ByVal nCount As Long) As Long
Private Declare Function FillRgn Lib "gdi32" (ByVal hDC As Long, _
ByVal hRgn As Long, ByVal hBrush As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" _
(ByVal crColor As Long) As Long
 
Private Sub Form_Load()
Me.Height = 10000: Me.Width = 10000
End Sub
 
Private Sub Form_Paint()
 
a = St(0): b = St(1): c = St(2)
If a > b Then b = St(0): a = St(1)
If b > c Then c = b: b = St(2)
If a + b < c Then
    MsgBox "косяк"
Else
    Me.Cls
    Me.ScaleMode = vbPixels
    k = IIf(Form1.ScaleWidth < Form1.ScaleHeight, _
    Form1.ScaleWidth, Form1.ScaleHeight) * 0.8 / c
    cone(0).X = Form1.ScaleWidth * 0.1
    cone(0).Y = Form1.ScaleHeight * 0.9
    cone(1).X = cone(0).X + k * c
    cone(1).Y = cone(0).Y
    d = (a ^ 2 + c ^ 2 - b ^ 2) / 2 / c
    h = (a ^ 2 - d ^ 2) ^ 0.5
    cone(2).X = cone(0).X + Int(k * d)
    cone(2).Y = cone(0).Y - Int(k * h)
 
    color = IIf(Abs(a ^ 2 + b ^ 2 - c ^ 2) < 10 ^ -6, vbBlue, vbGreen)
    hBrush = CreateSolidBrush(color)
    hRgn = CreatePolygonRgn(cone(0), 3, 1)
    FillRgn Me.hDC, hRgn, hBrush
    Polygon Me.hDC, cone(0), 3
End If
End Sub
 
Private Sub Комманда1_Click()
Form_Paint
End Sub

Оцени полезность:

14   голосов , оценка 3.571 из 5
Похожие ответы