我想把我的线路保持在我的圈子内。
我的代码:
Public Class Form1
Public Function pt(ByVal x As Integer, ByVal y As Integer, ByVal w As Integer, ByVal h As Integer)
Dim b As Bitmap = New Bitmap(Me.Width, Me.Height)
Dim g As Graphics = Graphics.FromImage(b)
g.DrawEllipse(Pens.Black, New Rectangle(x, y, h, w))
Me.BackgroundImage = b
Dim S As New Size
Dim loc As New Point
S.Width = 4
S.Height = 4
loc.X = x + w / 2 - 1
loc.Y = y + h / 2 - 1
Dim ptMove As New Panel
ptMove.Size = S
ptMove.Location = loc
ptMove.BackColor = Color.Aqua
Dim ptC As New Panel
ptC.Size = S
ptC.Location = New Point(loc.X, loc.Y - h / 2)
ptC.BackColor = Color.Red
Me.Controls.Add(ptC)
Me.Controls.Add(ptMove)
line(1, ptMove, ptC) ' < -- Draw The Line Between Two Point (I want To Keep Ptc Inside The Circle
Return True
End Function
Public Function line(ByVal w As Integer, ByVal pt1 As Panel, ByVal pt2 As Panel)
Dim b As Bitmap
b = Me.BackgroundImage
Dim g As Graphics
g = Graphics.FromImage(b)
g.DrawLine(Pens.Black, pt1.Location, pt2.Location)
Return True
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim x, y, w, h As Integer
x = 200
y = 40
w = 100
h = 100
pt(x, y, w, h)
End Sub
End Class
结果:
有两点:
point 1
point 2
点2:在圆的中心。
点1:在圆的边缘。
假设我将点 1 移动到新位置(例如0,0
):
g.DrawLine(Pens.Black, new point(0,0) , pt2.Location)
结果:
线在圈外
我想保持我圈内的线。
如何将线(ptC 面板)保持在圆的半径内?