ユーザーがボタンをクリックして線を作成し、フォーム上のポイントを選択してテキストボックスに長さを入力すると、線の長さにもなります。自己。
誰かがこれを手伝ってくれますか?
線の方向も考慮する必要があります。始めるのに役立つコードを次に示します。始点、線の長さ、および角度を度単位で指定します。0度は正のx軸に向かっています。このメソッドは、線の終点のx、y座標を返します。
Sub Main()
Dim start As New PointF(0, 0)
Dim length As Double = 10
Dim degrees As Double = 45
Dim endPoint As PointF = getEndPoint(start, length, degrees)
Console.WriteLine("Start point: {0}", start)
Console.WriteLine("Length: {0}", length)
Console.WriteLine("Angle: {0}", degrees)
Console.WriteLine("End point: {0}", endPoint)
Console.WriteLine("Press ENTER to exit...")
Console.ReadLine()
End Sub
Private Function getEndPoint(ByVal startPoint As PointF, ByVal length As Double, ByVal angleInDegrees As Double) As PointF
Dim x As Double = startPoint.X + length * Math.Cos(degreesToRadians(angleInDegrees))
Dim y As Double = startPoint.Y + length * Math.Sin(degreesToRadians(angleInDegrees))
Return New PointF(CType(x, Single), CType(y, Single))
End Function
Private Function degreesToRadians(ByVal degrees As Double) As Double
Return (Math.PI / 180.0) * degrees
End Function
このコードは、標準のデカルト平面を想定しています。Windowsフォームの原点はフォームの左上にあり、正のY軸はフォームの下にあるため、フォームに線を引くために使用する場合は、このコードを調整して正しく機能させる必要があります。
Windowsフォームでは、角度は時計回りに増加するため、これを調整するgetEndPointメソッドの更新バージョンを次に示します(完全にはテストされていません)。
Private Function getEndPoint(ByVal startPoint As PointF, ByVal length As Double, ByVal angleInDegrees As Double) As PointF
Dim x As Double = startPoint.X + length * Math.Cos(degreesToRadians(360.0 - angleInDegrees))
Dim y As Double = startPoint.Y + length * Math.Sin(degreesToRadians(360.0 - angleInDegrees))