0
私は描画ペンライン関数を作成するのが非常に難しいようですが、ユーザーがボタンをクリックしてラインを作成し、フォーム上のポイントをピックし、また、行の長さ、その自己になるテキストボックス。指定されたサイズ(長さ)のペンラインを描く
誰か助けてもらえますか?
私は描画ペンライン関数を作成するのが非常に難しいようですが、ユーザーがボタンをクリックしてラインを作成し、フォーム上のポイントをピックし、また、行の長さ、その自己になるテキストボックス。指定されたサイズ(長さ)のペンラインを描く
誰か助けてもらえますか?
また、行の方向も考慮する必要があります。始めに役立つコードがいくつかあります。開始点、線の長さ、および角度を0度で正のx軸に向けて指定します。この方法は、ラインの終点のy座標をXが返されます。
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))
が